C中的运算符优先级和关联性
运算符优先级确定表达式中术语的分组,并确定如何评估表达式。某些运算符具有更高的优先级;例如,乘法运算符的优先级高于加法运算符。
例如,x = 7 + 3 * 2; 在这里,x被赋值为13,而不是20,因为运算符*的优先级比+高,因此它首先与3 * 2相乘,然后加到7。
在此,优先级最高的运算符出现在表格的顶部,优先级最低的运算符出现在表格的底部。在表达式中,优先级较高的运算符将首先被评估。
类别 | 运算符 | 关联性 |
---|---|---|
后缀 | ()[]->。++-- | 左到右 |
一元 | +-!〜++--(type)*&sizeof | 右到左 |
乘性 | * /% | 左到右 |
添加剂 | +- | 左到右 |
转移 | << >> | 左到右 |
关系型 | <<=>> = | 左到右 |
平等 | ==!= | 左到右 |
按位与 | 和 | 左到右 |
按位异或 | ^ | 左到右 |
按位或 | | | 左到右 |
逻辑与 | && | 左到右 |
逻辑或 | || | 左到右 |
有条件的 | ?: | 右到左 |
分配 | = + =-= * = / =%= >> = << =&= ^ = | = | 右到左 |
逗号 | , | 左到右 |
范例程式码
#include <stdio.h>main() {
int a = 20;
int b = 10;
int c = 15;
int d = 5;
int e;
e = (a + b) * c / d; // ( 30 * 15 ) / 5
printf("Value of (a + b) * c / d is : %d\n", e );
e = ((a + b) * c) / d; // (30 * 15 ) / 5
printf("Value of ((a + b) * c) / d is : %d\n" , e );
e = (a + b) * (c / d); // (30) * (15/5)
printf("Value of (a + b) * (c / d) is : %d\n", e );
e = a + (b * c) / d; // 20 + (150/5)
printf("Value of a + (b * c) / d is : %d\n" , e );
return 0;
}
输出结果
Value of (a + b) * c / d is : 90Value of ((a + b) * c) / d is : 90
Value of (a + b) * (c / d) is : 90
Value of a + (b * c) / d is : 50
以上是 C中的运算符优先级和关联性 的全部内容, 来源链接: utcz.com/z/316307.html