c++中 int i = 3;int s = (++i)+(++i)+(++i);结果为什么是16

来源:百度知道 编辑:UC知道 时间:2024/05/17 04:46:05

不要依赖未定义行为。

参见:http://zhidao.baidu.com/question/111663274.html

在此式中,两个序列点之间i的值被修改了3次,所以标准已经放弃了这个表达式。任何思考都是没有根据的。不同的编译器结果不同。

3*3加再加1加1加2加3当然等于16

++i的意思是i自增1,第一个式子i++后为4,在看第二个式子,此时i在第一个式子中已经自增为4,所以第二个式子i++后为5,同理第三个式子中,此时i在第二个式子中已经自增为5,i++后为6,故最后答案为:4+5+6=15,你答案错了。

5楼正解,,哈哈..我在VS2008上答案是18

16才是正解。