c - 为什么这个C程序的输出是这样的?

标签 c

为什么下面程序的输出是

x = 10 y = 18

?

int y;
void fun(int x) {
 x+=2;
 y=x+2;
}

int main() {
 int x;
 x=10; y=11;
 fun(x);
 fun(y);
 printf("x=%d y=%d\n", x,y);
 return 0;
}

输出不应该是 10 和 11 吗?

最佳答案

因为 y 是一个全局变量,在第一次调用 fun(x);y 变成了 14 因为 x10x += 2 使得 x == 12 并且然后 y = x + 2 得到 14。然后你用y == 14调用它,这使得fun()中的局部xx == 16 然后 y == y + 218

关于c - 为什么这个C程序的输出是这样的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29724064/

相关文章:

代码运行正常,问题出在哪里?

c - 如何找到方阵中一组数字的众数

c - 在类型转换为不同类型后访问数组时出现段错误

c++ - 用户自定义函数返回值分配 : Performance?

c - 创建文件时出现段错误 11

c - 尝试正则表达式,简单的例子是行不通的

c - C 中正常 block 后检测到堆损坏

c - C 中随机名称按字母顺序排序

c - 如何解释位右移两个不同的结果?

c - 不正确的循环 - CS50 Mario