所以我的问题是,main中是否有两个变量x,一个转到g(),值为1,转到那里打印2,另一个保持1,在main中再次打印2。**
#include <stdio.h>
void f(){
extern int x;
x++;
printf("%d",x);
}
int x;
void g(){
++x;
printf("%d",x);
}
int main() {
// Write C code here
x++;
g();
printf("%d",x);
return 0;
}
产量:22
2条答案
按热度按时间wz1wpwve1#
这里,main中的
x
和全局作用域中g()之外定义的x
引用的是同一个x
。另外,由于前面的声明,变量x
在整个代码中都是extern
。尝试在所需位置打印
x
的地址。请参阅此answer了解更多信息
agyaoht72#
主变量中是否有两个名为x的变量
不可以,只有 * 一个 *,并且具有静态存储时间。它被定义在
g()
函数定义之上。你可以通过在你的
printf
s中添加一些东西来检查它:输出:
https://godbolt.org/z/sxYnfzqhP