这个问题还真不好确定答案,跟编译器有关,我没有试多个不同的c编译器,不过试了在c和java 的不同情况,如下:
用c,输出结果为15。则执行过程应该是相当于:
j = (i++)+(i++)+(i++),因为是后缀加,所以都是执行完表达式之后完成自增
语句执行完成后,j为15,i 三次自增,为8
用java,输出结果为18,则执行过程应该是相当于:
1. j = 5 + 6 + 7. 就是指 i 第一次是5,但是在第二个i++时,作为表达式运算加法时初始值已经为6,而对于第三个,则初始值为7。
2. 执行完后,i也是8