c语言运算符自增

发布时间:2024-05-24 06:05 发布:上海旅游网

问题描述:

int x=8,y
y=(++x)+(x++)+(++x)

问题解答:

#include <stdio.h>
int main()
{
int x=8,y;
y=(++x)+(x++)+(++x); //9+9+10=28

printf("%d",y);

return 0;
}

根据我的看法
x值中间没有变化
因为自增运算级别大于算术运算
所以x单独完成自增运算
然后才是算术运算
x++是运算完成后加1
++x是加1后在完成运算
所以综上
x=9
y=25

最后y=31,因为 y=11+9+11=31

++X是先让X加一再用X的值。而X++是先用X的值再让X加一。第一个,X加一,得十。(因为此句没有结束,所以X值还没有读出)第二个,因为当前X的值是九,所以X先等于九后,再加一,X等于十。第三个,X再加一次一,X等于十一。这一句结束,所以第一个和第三个X的值是十一。

最后y=28,因为 y=9+9+10=28;第一个 9由x=8进行前自增1得到9;第二个 9由x第一次自增后得到的9;第三个 10由9自增后得到的10.
而最后x=11;因为x由8自增了3,变为11。

不同C语言版本不一样,所以运算顺序也不同.有的C版本是按照三个括号是一等级计算的,也就是说三个括号中的内容同时运算,而有的版本则从左到右运算.因此,希望你不要太追究这个问题.为了增强程序的可移植性,像上述问题一般是这么解决的:int x=8,y;
y=++x;
y=y+(x++);
y=y+(++x);

x=11
y=28
因为y=9+9+10=28
x自加3次

热点新闻