运算符的优先级和结合性 | 优先级 | 操作符 | 功能 | 结合性 | 1(最高) | () | 改变优先级 |
从左到右
|
2
| [] | 数组下标 | -> | 指向结构体成员 | . | 结构体成员 |
++;–
| 自增1;自减1(++i,–i: 在使用之前,先使i值加(减)1;i++在使用之后再使i值加(减)1) |
从右到左
| & | 取地址 | * | 取内容 | ! | 逻辑 (非)求反 (! 条件式) | ~ | 按位取反 | +、- | 取正数、负数 | () | 强制类型转换 | sizeof | 取所占内存字节数 | 3 | *、/、% | 乘法、除法、取余 |
从左到右
| 4 | +、- | 加法、减法 | 5 | <<、>> | 左移位、右移位 | 6 | <、<=、>、>=、 | 小于、小于等于、大于、
大于等于
| 7 | = =、!= | 等于、不等于 | 8 | & | 按位与 | 9 | ^ | 按位异或 | 10 | | | 按位或 | 11 | && | 逻辑与 | 12 | || | 逻辑或 | 13 | ?: | 条件运算符 | 从右到左 |
14
| += | 加法赋值 |
从右至左
| -= | 减法赋值 | *= | 乘法赋值 | /= | 除法赋值 | %= | 取模赋值 | <<= | 左移位赋值 | >>= | 右移位赋值 | | = | 逻辑或赋值 | & = | 逻辑与赋值 | ^ = | 逻辑异或赋值 | ~ = | 逻辑非赋值 | 15(最低) | , | 逗号运算符,顺序求值 | 从左至右 | 说明:同一优先级的运算符由结合方向确定 |