printf("%d\n%d\n%d\n%d\n",++i,--i,i++,i--);
里的表达式是自右向左运算的,但i++和i--是printf函数取值后运算的,而++i和--i是先运算再取值,也就是7说此函数是这样运算的:--i后i=7,第二个输出7,然后再运行++i,第一个输出8,后面两个不参与输出时的运算,所以都是8。此函数输出完后再运行i++和i--,你可以在函数外用printf("%d\n",i)进行检验。
如果还不明白的话可以自己多次试验,少输出几个变量试试。
里的表达式是自右向左运算的,但i++和i--是printf函数取值后运算的,而++i和--i是先运算再取值,也就是7说此函数是这样运算的:--i后i=7,第二个输出7,然后再运行++i,第一个输出8,后面两个不参与输出时的运算,所以都是8。此函数输出完后再运行i++和i--,你可以在函数外用printf("%d\n",i)进行检验。
如果还不明白的话可以自己多次试验,少输出几个变量试试。