C语言操作符优先级总结

注:标号1—15优先级由高到低。

    优先级     运算符     含义   操作数个数   结合方向

1


()[] -> .

圆括号 下标运算符 指向结构体成员运算符 结构体成员运算符
自左向右


2


~

++

--

-

(类型)

*

&

sizeof


逻辑非

按位取反

自增

自减

负号

类型转换

指针运算符

取地址符

长度运算符


1(单目运算符)


自右至左

     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         , 逗号运算符 自左至右

记忆方法:

初等运算符:()[]-> ->单目运算符->算术运算符->移位运算符->位操作运算符->逻辑运算符(不包括!)->条件运算符->赋值运算符->逗号运算符

时间: 2024-10-13 21:33:54

C语言操作符优先级总结的相关文章

c语言操作符优先级

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

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

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

摘: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 否

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 - 负号运算