首页 > 试题广场 >

以下程序的结果是什么?int i=1; int main()

[不定项选择题]
以下程序的结果是什么?int  i=1; int main(){int i=i; return 0;}
  • main()函数里的i是一个未定义值
  • main()函数的i为1
  • 编译器不允许这种写法
  • main()里i的值为0
当main()函数里的i从定义开始,外部的全局变量i就已经被屏蔽掉,所以main()函数里作为右值的i的值不会0也不会是1,与外部的i无关。而是一个未定义的符号。
发表于 2022-04-23 12:22:39 回复(1)
《多选题》
发表于 2023-03-19 10:10:38 回复(0)
c选项求解析
发表于 2022-04-18 21:56:40 回复(1)
第一次发现这种行为居然是合法的,仔细想想也对,如果这个不合法那int* i = foo(i,arg2)这种也都不合法了(虽然暂时没想到应用场景)
发表于 2025-05-06 14:52:00 回复(0)
自己手动跑起来:
dange@fendou: ~
$ cat t.c
int  i=1; int main(){int i=i; printf("i = %d\n", i); return 0;}
dange@fendou: ~
$ gcc t.c -o t
t.c: In function ‘main’:
t.c:1:31: warning: implicit declaration of function ‘printf’ [-Wimplicit-function-declaration]
 int  i=1; int main(){int i=i; printf("i = %d\n", i); return 0;}
                               ^~~~~~
t.c:1:31: warning: incompatible implicit declaration of built-in function ‘printf’
t.c:1:31: note: include ‘<stdio.h>’ or provide a declaration of ‘printf’
+#include <stdio.h>
 int  i=1; int main(){int i=i; printf("i = %d\n", i); return 0;}
                               ^~~~~~
dange@fendou: ~
$ ./t
i = 0
发表于 2022-09-19 10:31:31 回复(0)
该错误类型属于运行错误,而不是编译错误,所以c选项错误
发表于 2022-07-25 21:23:57 回复(1)
D选项为0求解析?
发表于 2022-07-22 16:58:47 回复(0)