c - 函数使用的局部限制

标签 c

FOO 在最终答案中返回“0”的原因是什么:

 int FOO = 0, bar = 0, i;
 for (i = 0; i < 4; i++) {
     int FOO = i;
     printf("%d ", FOO);
     if (i % 2 == 0)
         FOO += bar;
     bar++;
 }
 printf("%d %d", FOO, bar);

最佳答案

在 foo 循环内部,您定义了一个同名的变量 FOO,这将遮蔽外部的 FOO,这意味着 FOO 您在循环中使用的只是该 block 的本地变量。最终的 printf 位于循环外部,因此它打印的 FOO 位于外部范围内。此时,阴影的 FOO 不再存在。 所以代码可以像这样对待:

int FOO_out = 0, bar = 0, i;
for (i = 0; i < 4; i++) {
    int FOO_in = i;
    printf("%d ", FOO_in);
    if (i % 2 == 0)
        FOO_in += bar;
    bar++;
}
printf("%d %d", FOO_out, bar);

关于c - 函数使用的局部限制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36806525/

相关文章:

c - 如何从文件中读取字符并将其拆分为两个 16 位?

c - 循环和函数 :Retirment lab for class

c - 为什么除法运算通常会占用更多计算机资源?

c - 无法在下面的代码中为 Char 变量赋值?

将字符数组复制到另一个而不复制换行符

c - 二进制字符指针中的字节数

c - 处理输入文件时如何向前看(处理 2 行)

c - 如何释放另一个结构体内部的结构体

从指针转换为不同大小的整数。编译错误

c - 用C/C++在Raspberry Pi上播放WAV,必须使用dsp吗?