如果我在x
循环中定义0
,为什么编译器会将int x;
的值显示为for
。但是当从int x
循环中删除for
时,x
的值为10
。
#include<stdio.h>
int main() {
int x = 0, i;
for(i = 1; i <= 10; i++) {
int x;
x = 10;
}
printf("%d", x);
}
如果你的for循环中有int x
,你可以创建一个新的x
变量。这意味着您在程序中有效地拥有两个x
变量,一个可以从main()
函数访问,另一个只能在for循环中访问。如果从for循环中访问x
,编译器将选择最接近的一个。
如果你不在你的for循环中有int x
,那么只有一个x
,你的程序会输出10
。
因为for循环中int x
的范围仅限于循环的范围。
for(i = 1; i <= 10; i ++){int x; X = 10; /仅限于此循环,不能使用for循环/}
而for x在for循环之外,但main()函数内部可用于main()内的所有函数
如果你想获得i
的价值,你可以试试这个:
x=i;
代替
int x;
x=10;
如前所述,如果在for
循环int x; x = 10;
中定义变量,它将创建一个仅在for
循环内访问的新变量。
因此,当您在x
中创建变量main
然后在x
循环中创建变量for
时,您当前将打印printf("%d", x);
引用到x
中声明的第一个main
,这就是为什么它打印为0.这是因为您在0
中启动了它线int x = 0, i;
,它永远不会改变。你从未真正印过你在x
循环中发起的for
。
但是当你从int x;
循环中移除for
时,只启动了一个x
,你在循环中将x
的值更改为10
。当你打印x
时,它会给你10
,这是在for
循环中分配给它的值。
希望这不会令人困惑。