C 为什么do中的整数(而数字>;10)会给出一个无止境的循环?
在我的理解中,while应该结束循环,因为 循环中的整数应该初始化为0。 还是我错了?但它给了我一个无止境的循环,打印零。 我用gcc编译它,并尝试用gdb调试它。 这对我来说毫无意义,while不能阻止循环C 为什么do中的整数(而数字>;10)会给出一个无止境的循环?,c,loops,while-loop,initialization,int,C,Loops,While Loop,Initialization,Int,在我的理解中,while应该结束循环,因为 循环中的整数应该初始化为0。 还是我错了?但它给了我一个无止境的循环,打印零。 我用gcc编译它,并尝试用gdb调试它。 这对我来说毫无意义,while不能阻止循环 #include <stdio.h> #include <stdlib.h> int main() { int number = 20; do { int number = number / 2; print
#include <stdio.h>
#include <stdlib.h>
int main()
{
int number = 20;
do
{
int number = number / 2;
printf("%d ", number);
} while (number > 10);
}
#包括
#包括
int main()
{
整数=20;
做
{
整数=数/2;
printf(“%d”,数字);
}而(数量>10个);
}
每次在循环中创建新的编号
,仅在循环内可见,与循环外的编号无关。删除int number=number/2中的int
代码>,因为您从不从功能范围更改编号。您在循环范围==>中创建了一个同名的新变量,删除int number=number/2中的int
代码>。是的,我知道,当我删除int。。那就行了,但我想知道。。为什么“while”不能打破循环。。当它一直处于新初始化状态时。。应该是零。。所以当我们分手的时候。。。还是我错了?这可以帮助你理解“当它一直是新初始化的……它应该是零。”它从来没有初始化为零。您初始化为20,并且从不更改它。int number=number/2代码>调用未定义的行为,任何事情都可能发生。因此while使用“外部”数字?。。而内部数字在while?之前是看不到的。。所以,虽然只看到(数字(20)>10是真的)。。。但现在我看到了范围问题。。谢谢好的,内部数字只有在括号内的代码被执行时才有效。因此,当它达到while(数字>10)时;它已经不存在了。