一、一般运算符规则:
优先级从大到小,从左向右:
单目运算符 ! ~ ++ --
算术运算符 * / % + -
移位运算符 << >>
关系运算符 < <= > >= == !=
位与运算符 &
异或运算符 ^ |
逻辑运算符 && ||
条件运算符 ?:
赋值运算符 = += *= /= %=
例如:
![](https://img-blog.csdnimg.cn/img_convert/c597d6804b7543adbf6415c1190cf5ab.png)
①++a先执行:a=4;
②+、-、/再执行:d=4+2-5;
所以结果:
![](https://img-blog.csdnimg.cn/img_convert/bce7f9ad4de04a33a869dcb36b17e546.png)
二、什么时候从右向左算?
(1)全为单目运算符:
![](https://img-blog.csdnimg.cn/img_convert/948079b6da9c4105b726d020855832ed.png)
那这个会输出什么呢?
①先执行a++;//a=5,在进行取值后+1;
②再执行a--;//a=6,在进行取值后-1;
④最后执行a;//a=5;
所以结果:
![](https://img-blog.csdnimg.cn/img_convert/fc05016d01f74324b1441d563ef0b6fc.png)
(2)全为条件运算符:
![](https://img-blog.csdnimg.cn/img_convert/db9906af9ff8400d9ad2fefffe589a2d.png)
这个呢?
①先执行b++>c?b:c ;//显然b>c,所以输出b,然后b=b+1;
然后变成了d=a>b?a++:b;//b=3;
②然后执行a>b?a++,b;//显然a<b,输出b;
③最后执行d=b;//d=3;
所以结果:
![](https://img-blog.csdnimg.cn/img_convert/920178e054c0466191c15f4758076a59.png)
(3)全为赋值运算符:
![](https://img-blog.csdnimg.cn/img_convert/1548007e44f248b2a8910f174ba74e1a.png)
a=b=c呢?
①先执行b=c ; //b=3;
②然后执行a=b ;//a=3
所以结果:
![](https://img-blog.csdnimg.cn/img_convert/63aeac0c5a67411582eaeb831f374828.png)
本人也是刚刚学习C语言,如有不对,欢迎指正!