“ | ”按位或运算符,优先级12级,如0x01 | 0xf0运算结果为0xf1。
“ || ”逻辑或运算符,也可以称之为条件或,优先级14级,如0x01 || 0xf0运算结果为True。
“ == ”等于运算符;“ != ”不等于运算符。优先级9级。
=、 +=、 -=、 *=、 /=、 %=、 &=、 ^=、 |=、 <<=、 >>=赋值运算符。优先级16级。
C语言的运算符主要用于构成表达式,同一个符号在不同的表达式中,其作用并不一致。下面按计算的优先顺序,分别说明不同作用的表达式。需要特别指出,在C语言标准中,并没有结合性的说法。[1]
相同优先级运算符,从左至右依次运算。注意后缀运算优先级高于前缀。因此++i++应解释为++(i++)。
而与或非的运算优先级都不一样,因此a && b || b && c解释为(a && b) || (b && c)
合理使用优先级可以极大简化表达式。
基本表达式 1级
基本表达式(Primary expressions),主要是用于运算符之间,做为运算数。
标识,常量,字符串文字量,优先级提升表达式最优先执行。
优先级提升表达式是指圆括号包围的表达式,如“( expression )”
后缀表达式 2极
postfix-expression [ expression ],数组下标运算。
postfix-expression ( argument-expression-list),函数调用,括号内的参数可选。
postfix-expression . identifier,成员访问,
postfix-expression -> identifier,成员访问,->号之前应为指针。
postfix-expression ++,后缀自增
postfix-expression --,后缀自减
( type-name ) { initializer-list }
( type-name ) { initializer-list , } 复合初始化,C99后新增。
单目/一元运算 3级
++ unary-expression 前缀自增
-- unary-expression 前缀自减
unary-operator cast-expression 单目转型表式式, 包括 取地址& ,提领 * , 正号+ ,负号- 位反~ 逻辑否!。
sizeof unary-expression 求类型长度,对表达式求类型长度
sizeof ( type-name ) 求类型长度
强制类型表达式 4级
( type-name ) cast-expression,强制表达式成为type-name指定的类型。
乘法表达式 5级
“ * ” 乘法运算符;“ / ”除法运算符;“ % ” 取余运算符。
加法运算符 6级
“ + ”加法运算符;“ - ”减法运算符。
移位运算符 7级
<< 左移运算符;>> 右移运算符。
关系运算符 8级
<、<=、>、>=关系运算符。
相等运算符 9级
“ == ”等于运算符;“ != ”不等于运算符。
位与运算符 10级
“ & ”按位与运算符
位异或运算符 11级
“ ∧ ”按位异或运算符(Bitwise exclusive OR operator)。
位或运算符 12 级
“ | ”按位或运算符(Bitwise inclusive OR operator)。
逻辑与运算符 13级
“&&”逻辑与运算符。
逻辑或运算符 14 级
“ || ”逻辑或运算符。
三元条件运算符 15级
? :条件运算符。
赋值运算符 16 级
=、 +=、 -=、 *=、 /=、 %=、 &=、 ^=、 |=、 <<=、 >>=赋值运算符。
逗号运算符 17级
“,”逗号运算符。
[pre]C 语言中,逗号(,)也可以是运算符,称为逗号运算符(Comma Operator)。逗号运算符可以把两个以上(包含两个)的表达式连接成一个表达式,称为逗号表达式。其一般形式为:
子表达式1, 子表达式2, ..., 子表达式n
例如:
a + b, c = b, c++
逗号运算符的优先级是所有运算符中级别最低的,通常配合 for 循环使用。逗号表达式最右边的子表达式的值即为逗号表达式的值。上例中,c++ 的值(c 自增之前的值)即为该表达式的值。
逗号运算符保证左边的子表达式运算结束后才进行右边的子表达式的运算。也就是说,逗号运算符是一个序列点,其左边所有副作用都结束后,才对其右边的子表达式进行运算。因此,上例中,c 得到 b 的值后,才进行自增运算。
温馨提示:内容为网友见解,仅供参考
运算符的优先级别是什么
1.运算符优先级顺序:同一优先级的运算符,运算次序由结合方向所决定的。简单的记就是:! >算术运算符>关系运算符>&&>||>赋值运算符。结合性: 2、13 、14是从右至左其他都是从左至右。2.优先级从上到下依次递减,最上面具有最高的优先级,逗号操作符具有最低的优先级。表达式的结合次序取决于...
优先级最高的运算符排序
7、等于运算符【==】、不等于运算符【!=】。8、按位与运算符【&】。9、按位异或运算符【^】。10、按位或运算符【|】。11、逻辑与运算符【&&】。12、逻辑或运算符【||】。13、条件运算符【?:】。14、赋值运算符【=】【\/=】【*=】【%=】【+=】【-=】【<<=】【>>=】【&=】【^=...
运算符优先级的顺序是什么?
运算符基本的优先级:指针最优,单目运算优于双目运算。如正负号。先算术运算,后移位运算,最后位运算。请特别注意:1 << 3 + 2 & 7等价于 (1 << (3 + 2))&7.逻辑运算最后结合。
c语言运算符优先级顺序表
最高优先级:单目运算符(如取反、乘方等)、赋值运算符(=、+=、-=、*=等)、逻辑非运算符(!)、关系运算符(<、<=、>、>=等)、相等运算符(==、!=等)、按位与运算符(&)、按位异或运算符(^)、按位或运算符(|)、位取反运算符(~)、条件运算符(?:)。中间优先级:逗号运...
运算符有优先级吗?
算术运算符:+、-、*、\/、%、++、--。这些运算符具有相对较高的优先级,它们通常在括号内运算完成后再执行。身份运算符:!(逻辑非)、~(按位取反)、&(按位与)、|(按位或)、^(异或)。这些运算符的优先级高于算术运算符,但低于括号。比较运算符:==、!=、>、<、≥、≤。这...
运算符优先级顺序
在编程中,运算符的优先级顺序是根据其重要性来排列的。不同的编程语言可能会有不同的运算符优先级,但一般来说,以下是一些常见的运算符优先级顺序:1. 括号():具有最高优先级,可以改变运算的顺序。2. 乘性运算符(*、\/、%): 如乘法、除法和取余,具有比加法和减法更高的优先级。例如,在...
什么是运算符的优先级?
1、括号 括号是最高优先级的运算符,它可以改变表达式中运算符的优先级,使其可以按照我们希望的顺序进行运算。括号内的表达式优先于括号外的表达式,括号中的表达式可以是任何类型的运算,甚至可以是另一个括号。2、幂运算 幂运算是次高优先级的运算符,它的优先级高于乘除运算,低于括号。幂运算用于计算...
C语言运算符的优先级顺序是什么?
1、括号运算符 括号运算符具有最高的优先级,它可以改变其他运算符的优先级顺序。使用括号可以明确表达式的计算顺序。2、一元运算符 一元运算符包括正号+、负号-、递增运算符++、递减运算符--、取地址运算符&、取值运算符*等。一元运算符优先级高于二元运算符,并且从右到左结合。3、算术运算符 算术...
什么是运算符优先级??
优先级从上到下依次递减,最上面具有最高的优先级,逗号操作符具有最低的优先级。表达式的结合次序取决于表达式中各种运算符的优先级。优先级高的运算符先结合,优先级低的运算符后结合,同一行中的运算符的优先级相同。不同类型的运算符之间也有相应的优先级顺序。一个表达式中既可以包括相同类型的运算...
运算符的优先级是怎样的?
C语言运算符优先级,从高到低依次如下:优先级速记:算术运算符 > 关系运算符 > 逻辑运算符 > 赋值运算符。逻辑运算符中“逻辑非 !”除外。如果不记得优先级了,使用()来确定执行顺序。有()先算()里面的。