【发布时间】:2020-08-14 07:33:16
【问题描述】:
代码 1: 没有警告 - 没有错误...一切正常
#include <stdio.h>
int main()
{
int r = 1;
printf("using %d\n", r);
for (int k = 1; k <= 2; k++)
{
int r = r * 2;
}
return 0;
}
代码 2: 错误
#include <stdio.h>
int main()
{
int cnt = 1;
printf("using %d\n", cnt);
{
int cnt = cnt * 2;
}
return 0;
}
编译器响应:
'cnt' is used uninitialized in this function [-Werror=uninitialized]
int cnt = cnt * 2;
所以,我知道在这种情况下 loop 和 block 之间存在一些区别,但我无法弄清楚。谁能告诉我scope of a variable 在这里是如何工作的?
【问题讨论】:
-
块中的cnt未分配
-
@ArjunUS 所以
r在循环中
标签: c