此代码的输出为4
,但我不明白为什么。有人可以解释为什么吗?
#include <iostream>
using namespace std;
int main(){
int val = 1;
do{
val++;
++val;
}while (val++ > 25);
cout << val << endl;
return 0;
}
答案 0 :(得分:3)
int val = 1; // val is 1
do{
val++; // val is 2 after statement
++val; // val is 3 after statement
}while (val++ > 25); // val is 3 within expression
// 3 > 25 is false so while loop exits.
// --
// After the expression
// val incremented with postfix ++ to 4.
cout << val << endl; // print val (which is 4)
答案 1 :(得分:1)
使用do while循环,您将执行一次循环主体,然后评估while条件,以查看是否应再次执行。那就意味着你
val++;
++val;
制作val
3
,然后在条件语句中执行val++
。它使val
4
,但由于它是后递增表达式,并且由于3
不大于3
,因此返回25
,则退出循环。这就是val
的值为4
的原因。
答案 2 :(得分:1)
在int val = 1;
行中将val
设置为1,在val++;
行中并将++val;
行中的val
递增,因此两者之后,val
将设置为3。
现在,也许您是 meant while (val++ < 25)
,但您是 writter while (val++ > 25)
。因此,val++
将增加到4,但是由于后期增加而产生3,比较3 > 25
将产生false
,这意味着循环不会循环。>
在那之后,您输出的val是4。
假设您是C ++的新手,我还想向您暗示不要使用using namespace std;
,而要在cout之前编写std::
。引入名称空间是为了防止库等中的符号名称冲突,并且使用using namespace std;
将所有符号拉到全局名称空间中实际上完全避开了名称空间的目标。
答案 3 :(得分:0)
Val的值第一次在do内将增加2,而在检查while的while块内的条件时,其值将增加1,即while(4> 25)。因此,Val的值为4。
答案 4 :(得分:0)
您将体内的val递增两次,然后在您放置的位置再次递增。
int main(){
int val = 1;
do{
val++; // val = 2
++val; // val = 3
}while (val++ // val = 4 > 25); // then breaks the loop because 4 < 25.
cout << val << endl;
return 0;
}