刚学习C语言的同学看到优先级和结合性往往是一脸懵懂。
其实,所谓优先级,就是表达式中有不同的运算符,我们该就先计算哪一个?例如,a+b*c,先计算乘法,再计算加法。
所谓结合性,就是表达式中的相同类型的运算符,先计算哪个,是从左往右,还是从右往左。例如 a=b=c;,先就按右边的赋值,再计算左边的赋值
优先级:
运算符的优先级是很难记忆的,尤其对于我们的新同学。我们可以在希望优先计算的部分上加上括号,让它优先计算。
例如:2+3*4+5 希望先计算2+3,4+5,然后相乘的,我们只需要 (2+3)*(4+5)
实在需要用到优先级表的,可以自行查表。
(表格来自 /steedhorse/article/details/5903974)
结合性
同种运算符,先计算哪个,需要用到结合性,
例如 a=b=c=3+2 ;
语句中用到2种运算符, 赋值运算符=,和加法+运算符,
查表可知道,=的优先级为14,+的优先级别为4,所以先计算3+2得到5, 式子变为 a=b=c=5
由于赋值运算符的结合性为 从右到左,所以先计算左边的,再计算右边的,所以计算顺序为:
a)c=5 ,c的值变为5,这个赋值表达式的值也为5,
b)b=5 b的值变为5,这个赋值表达式的值也为5
c)a=5 a的值变为5,