Kin*_*ter 2 c while-loop post-increment postfix-operator
我有一种感觉,我会在这里感到非常愚蠢,但我只是在学习使用++和--增加和减少 while 循环的变量,并且想知道为什么这段代码有效,为什么这不起作用?
错误代码:
int ctr = 0;
while (ctr < 10)
printf("%d",ctr);
ctr=ctr+1;
Run Code Online (Sandbox Code Playgroud)
坏代码无限期地输出零。
工作代码:
int ctr=0;
while (ctr++ < 10)
printf("%d",ctr);
Run Code Online (Sandbox Code Playgroud)
想法是输出为 012345678910,但即使在工作代码中,它也从 1 开始并变为 10,而不是从 0 开始。即使 ctr 的初始值是 0。
在第一种情况下
while (ctr < 10)
printf("%d",ctr);
ctr=ctr+1;
Run Code Online (Sandbox Code Playgroud)
该while循环体被认为是唯一的printf()声明。ctr=ctr+1;不是循环体的一部分。所以你在循环条件检查中有一个不变的变量,这使它成为无限循环。
您需要将这两个语句括在一个块作用域中, using{}以便这两个语句都成为循环体的一部分。就像是
while (ctr < 10) {
printf("%d",ctr);
ctr=ctr+1;
}
Run Code Online (Sandbox Code Playgroud)
会做。
在第二种情况下
int ctr=0;
while (ctr++ < 10)
printf("%d",ctr);
Run Code Online (Sandbox Code Playgroud)
ctr在while条件检查表达式中,作为后缀递增运算符的副作用已经递增。因此,在打印值时,正在打印已经增加的值。
| 归档时间: |
|
| 查看次数: |
13642 次 |
| 最近记录: |