运算符
运算符的元数,一个优先级和关联性。
-
Arity 表示操作数的数量。在 C 中,存在三种不同的运算符:
- 一元(1 个操作数)
- 二进制(2 个操作数)
- 三元(3 个操作数)
-
优先级表示哪些运算符首先绑定到它们的操作数。也就是说,哪个运算符优先对其操作数进行操作。例如,C 语言遵循乘法和除法优先于加法和减法的约定:
a * b + c给出相同的结果
(a * b) + c如果这不是想要的,可以使用括号强制优先级,因为它们具有所有运算符的最高优先级。
a * (b + c)这个新表达式将产生一个与前两个表达式不同的结果。
C 语言有许多优先级; 下面给出了所有运算符的表,按优先级的降序排列。
优先表
运算符 关联性 ()[]->.左到右 !~++--+-*(dereference)(type)sizeof右到左 *(乘法)/%左到右 +-左到右 <<>>左到右 <<=>>=左到右 ==!=左到右 &左到右 ^左到右 |左到右 &&左到右 ||左到右 ?:右到左 =+=-=*=/=%=&=^=|=<<=>>=右到左 ,左到右 -
关联性表示默认情况下等同优先级运算符的绑定方式,有两种: 从左到右和从右到左。从左到右绑定的一个例子是减法运算符(
-)。表达方式a - b - c - d有三个相同的优先级减法,但给出相同的结果
((a - b) - c) - d因为最左边的
-首先绑定到它的两个操作数。从右到左关联的一个例子是取消引用
*和后增量++运算符。两者都具有相同的优先级,因此如果它们用在诸如的表达式中* ptr ++,这相当于
* (ptr ++)因为最右边的一元运算符(
++)首先绑定到它的单个操作数。