printf函数在打印的时候先会计算出后面所有的表达式后再输出到标准输出上,后面的逗号表达式为i,j,m=++i,n=j++;i初始化为8,j初始化为10,m=++i(i先加变为9赋值给m,所以i为9,m为9),n=j++(j先赋值后再加,所以n是10,j也是10)。也许你会问j加了为什么不是11,这取决你的编译器(i++,和++i)在什么时候,我的编译器上j就会变成11.你的就是先打印了再j加了,你可以再后面加一句打印一下j的值。也许就是11.好了,就这样了。
printf 函数的参数是从右向左运算,然后,再从左向右输出的。
其顺序是,n = j++ 为n为10,m=++i,m为9,此时i,j的值变成,9,10(j的还没变,printf返回后,再变)。这时,再从左向右输出表达式。因此结果就为9,10,9,10
呵呵,楼主的运算顺序反了,应遵循从右向左的顺序,则依次计算为
n=j++ 自加在后,可以先忽略了 n=10
m=++i 则i的值为9 m=9
所以printf为9 10 9 10
希望对你有帮助。
亲,答案是9 11 9 10
原因是
i++是先计算后再加1 i=5这个是计算,i++就是i=5+1
++i是先自加1后再计算 ++i就是i+1=i i+5
所以
楼主忽悠了好些人,一看他们就是猜得
正确答案是 9 11 9 10
和他们说的一样啊,从右向左计算,右边优先级最高,
各位下次回答的时候拜托先验证一下,别误导了别人