混乱武林3单机版:关于C的自增运算符的又一个疑惑!!

来源:百度文库 编辑:高校问答 时间:2024/05/11 02:07:57
#include <iostream>

using namespace std;

int main()
{
int i=1;
cout<<(i++||i++||i++)<<endl;
cout<<i<<endl;
return 0;
}
输出结果怎么会是1,2呢?我预料的该是1,4啊!i不是自增了3次吗?求高手明示!!!

第一个i++为真, 后面的就不用执行了,所以实际只有1次i++,

||是逻辑与运算了
当第一个表达式为真是就不执行后面的
对于表达式"i++ || i++ || i++"
当执行第一个 i++后,其返回值为非0,即整个表达式的值均为真,系统将不再执行后面的运算
若将表达式改为"i++ && i++ && i++"
结果便是1,4

对于表达式"i++ || i++ || i++"
当执行第一个 i++后,其返回值为非0,即整个表达式的值均为真,系统将不再执行后面的运算
若将表达式改为"i++ && i++ && i++"
结果便是1,4

i++||i++||i++
做了前面的为真后
就不用做下面的或运算了