有人可以解释为什么此代码显示4吗?

时间:2019-03-05 19:16:48

标签: c++

此代码的输出为4,但我不明白为什么。有人可以解释为什么吗?

#include <iostream>

using namespace std;
int main(){
    int val = 1;

    do{
        val++;
        ++val;

    }while (val++ > 25);
    cout << val << endl;

    return 0;
}

5 个答案:

答案 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;
}