回 帖 发 新 帖 刷新版面

主题:前置递增和前置递减的问题

#include <iostream>
using namespace std;
void main(){
    int i=3,j;
j=++i+(++i)+(++i);
cout<<j<<endl;
}


结果为16;
不是为15吗?怎么会多了1?

回复列表 (共2个回复)

沙发

运算符操作数的求值顺序和运算符应用于操作数的求值顺序是不同的
j=++i+(++i)+(++i);
这个表达式中有3个运算符操作数的求值,3个(++i),三个操作数的求值顺序是不确定的,不会按照算术运算符中自左向右的顺序求值,存在所谓的副作用,即i的值在3个求值中会得到改变
所以不是j=4+5+6得到15这样的结果
不同的编译器将得到不同的求值结果

板凳

多谢

我来回复

您尚未登录,请登录后再回复。点此登录或注册