c语言中的i2=i1+++i1是什么意思?

来源:百度知道 编辑:UC知道 时间:2024/05/20 12:12:24
c语言中有+++运算符吗?

因为++运算子优先於+
i2 = i1+++i1 等同 i2 = (i1++)+i1。
再者,i1++,实际上i1的数值会在计算式结束後生效,所以式子可以分解成
i2 = i1+i1,i1=i1+1
假设i1=2,
则i2 = i1+i1 = 2; i1=3
再例:如果 i2 = i1+(++i1),++i1会在算式中生效,结果会变成,
i1=i1+1,i2 = i1+i1
假设i1=2,
则 i1=3; i2 = i1+i1 = 6

(i1++)+i1
i1+(++i1)
又是这种问题
这个算出的结果和编译器有关,不同的编译器会出现不同的结果

这个问题和编译器无关的,有就近原则。
i1+++i1等价于 (i1++)+i1;

结果和编译器有关,一般是遵从右组合规则,也就是i1+(++i1)

因编译器不同而异,可以自己写个小程序验证一下即可。不过结果还是限于你用的编译器。