为什么下面程序的输出是
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
因为 x
是 10
,x += 2
使得 x == 12
并且然后 y = x + 2
得到 14
。然后你用y == 14
调用它,这使得fun()
中的局部x
,x == 16
然后 y == y + 2
即 18
。
关于c - 为什么这个C程序的输出是这样的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29724064/