摘:C语言操作符优先级

操作符 描        述 用    法    示    例 结果类型 结合性 是否控制求值顺序
() 聚组 (表达式) 与表达式同 N/A
() 函数调用 rexp(rexp, ..., rexp) rexp L-R
[] 下标引用 rexp[rexp] lexp L-R
. 访问结构成员 lexp.member_name lexp L-R
-> 访问结构指针成员 rexp->member_name lexp L-R
++ 后缀自增 lexp++ rexp L-R
-- 后缀自减 lexp-- rexp L-R
! 逻辑反 !rexp rexp R-L
~ 按位取反 ~rexp rexp R-L
+ 单目,表示正值 +rexp rexp R-L
- 单目,表示负值 -rexp rexp R-L
++ 前缀自增 ++lexp rexp R-L
-- 前缀自减 --lexp rexp R-L
* 间接访问 *rexp lexp R-L
& 取地址 &lexp rexp R-L
sizeof 取其长度,用字节表示
sizeof 类型

sizeof(rexp)

rexp R-L
(类型) 类型转换 (类型)rexp rexp R-L
* 乘法 rexp*rexp rexp L-R
/ 除法 rexp/rexp rexp L-R
% 整数取余 rexp%rexp rexp L-R
+ 加法 rexp+rexp rexp L-R
- 减法 rexp-rexp rexp L-R
<< 左移位 rexp<<rexp rexp L-R
>> 右移位 rexp>>rexp rexp L-R
> 大于 rexp>rexp rexp L-R
>= 大于等于 rexp>=rexp rexp L-R
< 小于 rexp<rexp rexp L-R
<= 小于等于 rexp<=rexp rexp L-R
== 等于 rexp==rexp rexp L-R
!= 不等于 rexp!=rexp rexp L-R
& 位与 rexp&rexp rexp L-R
^ 位异或 rexp^rexp rexp L-R
| 位或 rexp|rexp rexp L-R
&& 逻辑与 rexp&&rexp rexp L-R
|| 逻辑或 rexp||rexp rexp L-R
?: 条件操作符 rexp?rexp:rexp rexp N/A
= 赋值 lexp=rexp rexp R-L
+= 以...加 lexp+=rexp rexp R-L
-= 以...减 lexp-=rexp rexp R-L
*= 以...乘 lexp*=rexp rexp R-L
/= 以...除 lexp/=rexp rexp R-L
%= 以...取模 lexp%=rexp rexp R-L
<<= 以...左移 lexp<<=rexp rexp R-L
>>= 以...右移 lexp>>=rexp rexp R-L
&= 以...与 lexp&=rexp rexp R-L
^= 以...异或 lexp^=rexp rexp R-L
|= 以...或 lexp|=rexp rexp R-L
, 逗号 rexp, rexp rexp L-R

摘自《C和指针》

原文地址:https://www.cnblogs.com/igfirstblog/p/9973371.html

时间: 2024-10-07 16:59:13

摘:C语言操作符优先级的相关文章

c语言操作符优先级

运算符 结合性 () [] -> . 自左至右 ! ~ ++ -- - (type) * & sizeof 自右至左 * / % 自左至右 + - 自左至右 << >> 自左至右 < <= > >= 自左至右 == != 自左至右 & 自左至右 ^ 自左至右 | 自左至右 && 自左至右 ||  自左至右 ?: 自右至左 = 自右至左 , 自左至右 1.优先级最高的并不是真正意义上的运算符,包括数组下标,函数调用操作符和

被C语言操作符优先级坑了

今天有一个枚举的题目的代码是这样的: 重点在于maxXor这个函数的实现,枚举两个数字,其中maxr保存了最大值的 i 异或 j , 可是这个程序执行结果大大出乎意外-_-. 然后就把 i 异或 j 的结果临时保存在int,进行比较,程序正确的执行了.原来是被操作符优先级坑到了.位操作的优先级比比较操作符的优先级更低. #include <map> #include <set> #include <list> #include <cmath> #includ

C语言操作符优先级总结

注:标号1-15优先级由高到低.     优先级     运算符     含义   操作数个数   结合方向 1 ()[] -> . 圆括号 下标运算符 指向结构体成员运算符 结构体成员运算符 自左向右 2 ! ~ ++ -- - (类型) * & sizeof 逻辑非 按位取反 自增 自减 负号 类型转换 指针运算符 取地址符 长度运算符 1(单目运算符) 自右至左      3   *  /  % 乘法,除法,求余 2(双目运算符) 自左至右        4      + - 加法 ,

C语言运算符优先级及结合性

今天去翻了下C语言运算符的优先级和结合性,发现当初学习的时候就没认真记住,惭愧.发现一篇讲得不错的文章,编辑了下转来供以后翻阅. C语言运算符优先级表(由上至下,优先级依次递减) 运算符 结合性 () [] -> . 自左向右 ! ~ ++ -- - (type) * & sizeof 自右向左 * / % 自左向右 + - 自左向右 << >> 自左向右 < <= > >= 自左向右 == != 自左向右 & 自左向右 ^ 自左向右

C语言运算符优先级存在的问题

C语言中的符号重载(C专家编程,2.3误做之过,P38) 优先级问题 表达式 人们可能误以为的结果 实际结果 .的优先级高于* ->操作符用于消除这个问题 *p.f p所指对象的字段f (*p).f 对p取f偏移,作为指针,然后进行解除引用操作 *(p.f) []高于* int *ap[] ap是个指向int数组的指针 int (*ap)[] ap是个元素为int指针的数组 int *(ap[]) 函数()高于* int *fp() fp是个函数指针,所指函数返回int int(*fp)() f

C 语言运算符优先级

每当想找哪个运算符优先级高时,很多时候总是想找的就没有,真让人气愤!现在,终于有个我个人觉得非常全的,分享给大家,欢迎拍砖! C语言运算符优先级 优先级 运算符 名称或含义 使用形式 结合方向 说明 1 [] 数组下标 数组名[常量表达式] 左到右 -- () 圆括号 (表达式)/函数名(形参表) -- . 成员选择(对象) 对象.成员名 -- -> 成员选择(指针) 对象指针->成员名 -- 2 - 负号运算符 -表达式 右到左 单目运算符 ~ 按位取反运算符 ~表达式 ++ 自增运算符 +

C语言运算符优先级

C语言运算符优先级 优先级 运算符 名称或含义 使用形式 结合方向 说明 1 [] 数组下标 数组名[常量表达式] 左到右 -- () 圆括号 (表达式)/函数名(形参表) -- . 成员选择(对象) 对象.成员名 -- -> 成员选择(指针) 对象指针->成员名 -- 2 - 负号运算符 -表达式 右到左 单目运算符 ~ 按位取反运算符 ~表达式 ++ 自增运算符 ++变量名/变量名++ -- 自减运算符 --变量名/变量名-- * 取值运算符 *指针变量 & 取地址运算符 &

C/C++ 操作符优先级

不能光转贴,有空要熟悉之后,要写点心得.现在发现 . 的优先级确实很高. C: Precedence Operator Description Associativity 1 ++ -- Suffix/postfix increment and decrement Left-to-right () Function call [] Array subscripting . Structure and union member access ?> Structure and union membe

C语言运算符优先级列表(超级详细的---转载加自己习题)

转载于:http://www.jb51.net/article/37282.htm 每当想找哪个运算符优先级高时,很多时候总是想找的就没有,真让人气愤!现在,终于有个我个人觉得非常全的,分享给大家,欢迎拍砖! C语言运算符优先级 优先级 运算符 名称或含义 使用形式 结合方向 说明 1 [] 数组下标 数组名[常量表达式] 左到右 -- () 圆括号 (表达式)/函数名(形参表) -- . 成员选择(对象) 对象.成员名 -- -> 成员选择(指针) 对象指针->成员名 -- 2 - 负号运算