int i=5;
printf("%d\n",(i++)+(++i)+(--i)+(i--)-(i++));为什么输出的是17而不是16?printf("%d\n",(++i)+(--i)+(i++)+(i--)-(i++));而这一次是15?请高手详细分析一下运算过程
printf("%d\n",(i++)+(++i)+(--i)+(i--)-(i++));为什么输出的是17而不是16?printf("%d\n",(++i)+(--i)+(i++)+(i--)-(i++));而这一次是15?请高手详细分析一下运算过程
运算的结果和编译器的实现有关系;
在C语言中(GCC编译器),先从左到右,计算++i,--i,然后再从左到右计算i++,i--,并最终取得结果;但在javascript中,虽然具有相同的语法,但却完全从左到右计算,而不把++i,--i看做具有更高的优先级。如果采用其他C语言风格编译器,恐怕还会得出更多结果。
谢谢指点,如果在表达式里有同时有++i和--i,是如何计算的?