这个问题还真不好确定答案,跟编译器有关,我没有试多个不同的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
哪个程序员要是写出这种代码,公司会直接将其开除。这东西不同编译器可能有不同的解释。学语言尤其是菜鸟,千万不要在这种毫无意义的代码上钻牛角尖。实际代码中你一辈子也见不到类似代码。
这个跟编译器有关 j=(i++)+ (i++) + (i++) ;
结果是 j=15