C语言中extern的疑惑。

firebroo 发布于 2015/05/18 22:10
阅读 320
收藏 1
GCC

看图说话,为啥这样a变量输出会是100。

我今天看extern遇到的问题,正确的写法应该是在file2.c里面把a声明成extern int a,表示a用的是外部变量,但是就是困惑为啥不加extern,也会去到外部变量的值。


加载中
2
hncscwc
hncscwc

强弱符号的问题   <<程序员的自我修养--链接 装载与库>>书中第三章有提到

firebroo
firebroo
thanks。
0
中山野鬼
中山野鬼
你在file1.c中,改称 double a = 100; file2.c中不改动,再试试。哈。int是默认情况。自然没问题。
firebroo
firebroo
回复 @firebroo : 我好像有点理解了。int a这种也是定义。恰巧由于file1.c的存在把a对应的内存的值赋值成了100,所以file1.c这个文件的a变量在初始的时候就取了100,默认初始的话应该是所有的地址对应都是0,是不是这样,野鬼?
firebroo
firebroo
这么改是啥意思?为何要保持file2不变?按照你的改输出是0。
0
泡不烂的凉粉
泡不烂的凉粉
对于未定义行为,完全取决于编译器。
返回顶部
顶部