C语言运算符优先级和口诀
一共有十五个优先级:
1 () [] . ->
2 ! ~ -(负号) ++ -- &(取变量地址)* (type)(强制类型) sizeof
3 * / %
4 + -
5 >> <<
6 > >= < <=
7 == !=
8 &
9 ^
10 |
11 &&
12 ||
13 ?:
14 = += -= *= /= %= |= ^= &= >>= <<=
15 ,
就着多吧 结合性:2 13 14 是从右至左 其他都是 从左至右有问题可以在交流的
C语言操作符优先级
优先级 | 运算符 | 含 义 | 要求运算 对象的个数 | 结合方向 |
1 | () [] -> . | 圆括号 下标运算符 指向结构体成员运算符 结构体成员运算符 |
| 自左至右 |
2 | ! | 逻辑非运算符 | 1 (单目运算符) | 自右至左 |
~ | 按位取反运算符 | |||
++ | 自增运算符 | |||
-- | 自减运算符 | |||
- | 负号运算符 | |||
(类型) | 类型转换运算符 | |||
* | 指针运算符 | |||
& | 地址与运算符 | |||
sizeof | 长度运算符 | |||
3 | * / % | 乘法运算符 除法运算符 求余运算符 | 2 (双目运算符) | 自左至右 |
4 | + - | 加法运算符 减法运算符 | 2 (双目运算符) | 自左至右 |
5 | << >> | 左移运算符 右移运算符 | 2 (双目运算符) |
|
6 | < <= > >= | 关系运算符 | 2 (双目运算符) | 自左至右 |
7 | == != | 等于运算符 不等于运算符 | 2 (双目运算符) | 自左至右 |
8 | & | 按位与运算符 | 2 (双目运算符) | 自左至右 |
9 | ^ | 按位异或运算符 | 2 (双目运算符) | 自左至右 |
10 | | | 按位或运算符 | 2 (双目运算符) | 自左至右 |
11 | && | 逻辑与运算符 | 2 (双目运算符) | 自左至右 |
12 | || | 逻辑或运算符 | 2 (双目运算符) | 自左至右 |
13 | ? : | 条件运算符 | 3 (三目运算) | 自右至左 |
14 | = += -= *= /= %= >>= <<= &= ^= |= | 赋值运算符 | 2 | 自右至左 |
15 | , | 逗号运算符 |
| 自左至右 |
括号成员第一; //括号运算符[]() 成员运算符. ->
全体单目第二; //所有的单目运算符比如++、 --、 +(正)、 -(负) 、指针运算*、&乘除余三,加减四; //这个"余"是指取余运算即%
移位五,关系六; //移位运算符:<< >> ,关系:> < >= <= 等
等于(与)不等排第七; //即== 和!=
位与异或和位或; //这几个都是位运算: 位与(&)异或(^)位或(|)
"三分天下"八九十;
逻辑或跟与; //逻辑运算符:|| 和 &&
十二和十一; //注意顺序:优先级(||) 底于 优先级(&&)
条件高于赋值, //三目运算符优先级排到13 位只比赋值运算符和","高
逗号运算级最低! //逗号运算符优先级最低