一、一般运算符规则:
优先级从大到小,从左向右:
单目运算符 ! ~ ++ --
算术运算符 * / % + -
移位运算符 << >>
关系运算符 < <= > >= == !=
位与运算符 &
异或运算符 ^ |
逻辑运算符 && ||
条件运算符 ?:
赋值运算符 = += *= /= %=
例如:
![](https://i-blog.csdnimg.cn/blog_migrate/a8bb1b92dd2ccf54e5498ce8c21f375e.png)
①++a先执行:a=4;
②+、-、/再执行:d=4+2-5;
所以结果:
![](https://i-blog.csdnimg.cn/blog_migrate/fd5cba561348552ebd3071d2fa2fa1fb.png)
二、什么时候从右向左算?
(1)全为单目运算符:
![](https://i-blog.csdnimg.cn/blog_migrate/3dd16c4cb40b6501e682de30b4708464.png)
那这个会输出什么呢?
①先执行a++;//a=5,在进行取值后+1;
②再执行a--;//a=6,在进行取值后-1;
④最后执行a;//a=5;
所以结果:
![](https://i-blog.csdnimg.cn/blog_migrate/4da09aaa62cafa9e18d7a1e94f42fcc9.png)
(2)全为条件运算符:
![](https://i-blog.csdnimg.cn/blog_migrate/b0779a791222d46d7dfcf79c385fdede.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://i-blog.csdnimg.cn/blog_migrate/507a57ee5fbe53e8530162495fe4732f.png)
(3)全为赋值运算符:
![](https://i-blog.csdnimg.cn/blog_migrate/c7e611e5c439770f3712939e0309b476.png)
a=b=c呢?
①先执行b=c ; //b=3;
②然后执行a=b ;//a=3
所以结果:
![](https://i-blog.csdnimg.cn/blog_migrate/ca80eabd0e17a0171b68c6f62c1c7623.png)
本人也是刚刚学习C语言,如有不对,欢迎指正!