有人可以解释为什么此代码打印4

Can someone explains why this code prints 4?

本文关键字:代码 打印 为什么 解释      更新时间:2023-10-16

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

#include <iostream>
using namespace std;
int main(){
    int val = 1;
    do{
        val++;
        ++val;
    }while (val++ > 25);
    cout << val << endl;
    return 0;
}
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)

使用do while循环您将执行一次循环的主体,然后评估时条件以查看是否应该再次进行。这意味着您要做

val++;
++val;

制作val 3,然后在条件语句中进行val++。这使val 4使得它返回3,因为它是inflement表达式,并且由于3不大于25,因此您退出循环。这就是为什么val具有4的值。

val的值在第一次do中增加了2个,而在do and of do的同时检查条件时,其值会增加1。> 25)。因此,Val的值为4。

在行int val = 1;val中将设置为1。在行val++;中,在++val;行中,val将被递增,因此两者都将val设置为3。p>现在,可能,您表示 while (val++ < 25),但是您 word while (val++ > 25)。因此,val++将增加到4,但是由于引入后,收率3,并且比较3 > 25将产生false,这意味着循环不会循环。

之后,您打印为4。

假设您是C 的新手,我还想暗示您不使用using namespace std;,而是在COUT之前编写std::。引入了名称空间,以防止库中的符号名称等,并用using namespace std;将所有符号拉到全局名称空间中,实际上完全绕过了命名空间背后的目标。

您正在将体内的阀递增两次,然后再增加您放置的位置。

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