首页 > 解决方案 > C程序的令人困惑的输出

问题描述

为什么编译器显示x好像0我在循环int x;内部定义的值。for但是当int xfor循环中删除时给出xas的值10

#include<stdio.h>
int main() {
    int x = 0, i;
    for(i = 1; i <= 10; i++) {
        int x;
        x = 10;
    }
    printf("%d", x);
}

标签: cfor-loopoutput

解决方案


如果你有int x你的 for 循环,你创建一个新x变量。这意味着x您的程序中实际上有两个变量,一个可以从您的main()-function 访问,另一个只能在 for 循环内访问。如果您x从 for 循环中访问,编译器将选择最接近的一个。

如果你没有int x在你的 for 循环中,那么只有一个x,你的程序会输出10.


推荐阅读