C语言int i=5;j=i+++i+++i++;j=?是怎么算的呀?

如题所述

这个问题还真不好确定答案,跟编译器有关,我没有试多个不同的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

温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-11-25
哪个程序员要是写出这种代码,公司会直接将其开除。这东西不同编译器可能有不同的解释。学语言尤其是菜鸟,千万不要在这种毫无意义的代码上钻牛角尖。实际代码中你一辈子也见不到类似代码。本回答被提问者采纳
第2个回答  2013-11-25
这个跟编译器有关 j=(i++)+ (i++) + (i++) ;
结果是 j=15
第3个回答  2013-11-25
j =( i++)+(i++)+(i++).
j=18
i=8
相似回答