C语言运算符的优先级和结合性
优先级 | 运算符 | 结合性 |
---|---|---|
1 | () [] -> . | 从左至右 |
2 | ! ~ ++ -- *(取内容) &(取地址) +(取正) -(取负) sizeof | 从右至左 |
3 | *(乘) / % | 从左至右 |
4 | +(加) -(减) | |
5 | << >> | |
6 | < <= > >= | |
7 | == != | |
8 | &(位逻辑与) | |
9 | ^ | |
10 | | | |
11 | && | |
12 | || | |
13 | ?: | 从右至左 |
14 | = += -= *= /= %= &= ^= |= >>= <<= | 从右至左 |
15 | , | 从左至右 |
注:优先级的数字越小,级别越高。
表达式
用运算符和括号将运算对象(常量、变量和函数等)连接起来,符合C语言语法规则的运算式,称为表达式。每个表达式都可以按照运算符的运算规则进行运算,并最终获得一个值,称为表达式的值。
表达式的数据类型即是表达式值是数据类型。表达式的计算结果可能是整型、实型、字符型或逻辑型,由于字符型和逻辑型可以看成整型,所以表达式的基本数据类型实际上只分为整型和实型两在类,这两种类型统称为数值型。
以下的情况都是表达式:
1、单个的常量、变量和函数调用。
2、“单目前缀运算符 表达式”。
3、“表达式 单目后缀运算符”。
4、“表达式 双目运算符 表达式。
5、表达式 ? 表达式 : 表达式。
6、有限次地使用上述规则获得的表达式
按照构成表达式的运算符划分,C语言的表达式可分为算术表达式、关系表达式、逻辑表达式、条件表达式、赋值表达式、位运算表达式和逗号表达式等。
表达式的计算
1、按照运算符的优先级高低次序进行计算,例如先乘除后加减。
2、如果一个运算对象(或称操作数)两侧的运算符优先级相同,则按照C语言规定的结合方向(结合性)进行计算。