【发布时间】:2017-04-12 04:48:52
【问题描述】:
我试过下面的代码 foo1.c
#include<stdio.h>
void f(void);
int x = 38;
int y = 39;
int main() {
f();
printf("x = %d\n", x);
printf("y = %d\n", y);
return 0;
}
foo2.c
double x;
void f() {
x = 42.0;
}
输出:
$ gcc -o myprog foo1.c foo2.c
$ ./myprog
x = 0
y = 1078263808
我得到了这段代码的奇怪输出,有人能解释一下它是怎么产生的吗?
【问题讨论】:
-
这个程序的行为是undefined。也请不要发布代码图片。
-
@n.m.好的,我更改了代码感谢您的建议
-
当你对你的编译器撒谎时,它会因为没有做你所期望的而得到回报。