【发布时间】:2018-01-18 08:15:05
【问题描述】:
在我的理解中,while 应该结束循环,因为 int number "in" 循环应该用 0 初始化它。 还是我错了?但它给了我一个无限循环,打印零。 我用 gcc 编译它并尝试用 gdb 调试它。 对我来说,while 不会停止循环,这对我来说毫无意义。
#include <stdio.h>
#include <stdlib.h>
int main()
{
int number = 20;
do
{
int number = number / 2;
printf("%d ", number);
} while (number > 10);
}
【问题讨论】:
-
因为您永远不会从函数范围更改
number。您在循环范围内创建了一个同名的新变量 ==> 删除int number = number / 2;中的int。 -
是的,我知道,当我删除 int .. 然后它工作,但我想知道,.. 为什么“while”不会打破循环.. 当它一直新初始化时。 . 它应该是零.. 所以 while 应该打破......还是我错了?
-
这可以帮助你理解godbolt.org/g/UL9Wd3
-
"当它一直新初始化时......它应该是零。"它永远不会初始化为零。您初始化为 20 并且永远不会更改它。
-
int number = number / 2;调用未定义的行为,任何事情都可能发生。
标签: c loops while-loop initialization int