2.6.1 运算符汇总
前面已分别介绍了各个运算符的书写形式、功能和使用。下面把所有运算符集中在一起,列出其优先级和结合性,如表2.6.1所示。
表2.6.1 运算符优先级及结合性
说明:
(1)所有运算符的优先级共分为15级。基本运算符的优先级最高(为15级),逗号运算符的优先级最低(为1级)。在表中,优先级从上到下依次递减。
(2)当不同类型的运算符出现在同一个表达式中,在计算该表达式的值时,应先执行优先级高的运算,再执行优先级低的运算。例如:
i|j&k*m
该表达式中有三个运算符,按优先级的高低为序,依次是*、&和|。所以,该表达式就等价于:
i|(j&(k*m)
先计算最内层圆括号括起来的表达式,然后逐层向外扩展。
(3)表中同一行上的运算符有相同的优先级,如果它们出现在同一个表达式中,则按结合性的顺序进行计算。例如:
i/j*k
该表达式中的运算符“/”和“*”具有相同的优先级,其结合性是自左至右,所以,该表达式等价于:
(i/j)*k
先计算i/j,然后将其结果与k相乘。
又如:
*p−−
该表达式中的运算符“*”和“−−”具有相同的优先级,但它们的结合性是自右至左的,因此,该表达式等价于:
*(p−−)
(4)在分析C源程序或者编写C程序时,要注意运算符的作用和其运算分量的个数。因为有些运算符虽然“外观”上一样,但却属于不同类型的运算符。例如:i*j,其中运算符“*”是乘号,它有左右两个分量;而*p*i中,左边的“*”是单目运算符,只有一个运算分量,其作用是取出p(指针量)所指向内存单元的内容,右边的“*”是双目运算符,表示两数相乘。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。