分类: C/C++
2010-04-26 05:27:51
奇怪的代码. 今天发现了一段奇怪的代码.这段代码竟然可以在GNU GCC/G++下编译通过,并且能够运行.但是运行结果却在想象之中意料之外. #include #define NUM getnum() int getnum(){ int x=0; scanf("%d", &x); printf("%d\n", x); return x; } int main(int argc, char** argv){ int array[NUM]; printf("array size = %d\n", sizeof(array)); return 0; } 在GCC/G++下可以编译通过,运行结果如下: 10 10 arraay size = 40 20 20 arraay size = 80 -1 -1 arraay size = -4 现在的问题是: 1.sizeof是在运行期计算的么? 2.array的空间到底是分配到哪儿了,heap or stack?