有人可以解释为什么此代码打印4
Can someone explains why this code prints 4?
此代码的输出是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;
}
相关文章:
- 这个指针和内存代码打印是什么?我不知道是打印垃圾还是如何打印我需要的值
- 为什么这个 c++ 代码打印出长度 5,当我打印出字符串时,程序会自动终止?
- C ++如何使用UTF8十六进制代码打印UTF8符号?
- 如何使代码打印文本文件中的第一行?
- 有没有办法用单行逻辑代码打印金字塔星形图案?面试官向我的朋友问了这个问题
- 为什么我的代码打印右值 2 次而不是右值和左值?
- 为什么我的代码打印错误的密文
- 代码打印出一系列无意义的数字
- 为什么此代码打印字符串而不是打印地址
- 有人可以解释为什么此代码打印4
- 期望:代码打印出x(您键入的)在矩阵中出现的次数.实际:代码打印出值量
- 为什么此代码打印6而不是5
- 为什么此代码打印"olleH"?
- 为什么我的代码打印每个数字
- C++代码打印奇怪的值
- 为什么此代码打印 0
- 如何使用 logcat 以本机代码打印(或转储)包裹
- 我的代码打印出地址而不是数组值
- 为什么此代码打印垃圾
- 为什么这个代码打印出一个4