运算符的优先级
- 格式:doc
- 大小:19.00 KB
- 文档页数:3
c语言运算符的优先级C语言运算符的优先级在C语言中,运算符是用来进行各种数学和逻辑运算的符号。
在进行多个运算时,需要按照一定的优先级来确定运算的顺序。
C语言中的运算符优先级是由高到低排列的,高优先级的运算符先于低优先级的运算符进行计算。
下面我们来详细了解一下C语言中各个运算符的优先级。
1. ():括号运算符是C语言中优先级最高的运算符,它可以改变其他运算符的优先级。
在进行复杂的运算时,可以使用括号来明确运算的顺序。
2. ++、--:自增和自减运算符的优先级也很高,它们可以在表达式中直接改变变量的值。
在表达式中,自增和自减运算符的优先级高于其他运算符。
3. !、~、+、-:逻辑非、按位取反、正负号运算符的优先级相同,它们的优先级高于算术运算符,但低于自增和自减运算符。
4. *、/、%:乘、除、取模运算符的优先级相同,它们的优先级高于加减运算符,但低于自增和自减运算符。
5. +、-:加、减运算符的优先级相同,它们的优先级低于乘、除、取模运算符,但高于移位运算符。
6. <<、>>:左移、右移运算符的优先级相同,它们的优先级低于加、减运算符,但高于按位与、按位异或、按位或运算符。
7. <、<=、>、>=:关系运算符的优先级相同,它们的优先级低于移位运算符,但高于等于、不等于运算符。
8. ==、!=:等于、不等于运算符的优先级相同,它们的优先级低于关系运算符。
9. &:按位与运算符的优先级低于等于、不等于运算符,但高于按位异或、按位或运算符。
10. ^:按位异或运算符的优先级低于按位与运算符,但高于按位或运算符。
11. |:按位或运算符的优先级最低,它的优先级低于按位异或运算符。
在进行复杂的运算时,需要根据运算符的优先级来确定运算的顺序,以避免出现错误的结果。
在编写程序时,需要注意运算符的优先级,以确保程序的正确性和可读性。
总结C语言中的运算符优先级是由高到低排列的,高优先级的运算符先于低优先级的运算符进行计算。
按运算符优先级从高到低,单目运算符-> 双目运算符-> 三目运算符-> 赋值运算符-> 逗号运算符,特别在双目运算符中,按运算符优先级从高到低:算术运算符-> 移位运算符-> 关系运算符(其中== 和!= 优先级又较低)-> 逻辑运算符(按位与-> 按位异或-> 按位或-> 逻辑与-> 逻辑或)。
C 语言运算优先级表如下(由上至下,优先级依次递减)
() [] -> . 之类的理所当然是最优先的.
接下来就是单目运算符优先,也就是! ~ ++ -- - (type) * & sizeof 了。
接着是双目运算符,< <= > >= 比== != 的优先级来得高。
此外,在逻辑运算符中,与运算又比或运算优先级来得高,异或则处于二者之间。
同样的,你可以类比出&& 与|| 的优先级关系。
接下来是三目运算符。
然后是赋值操作符。
逗号运算符是分割各个子语句的,优先级最低。
C语言运算符优先级运算符是C语言中非常重要的一个概念,它可以用来构建表达式和算式。
在C语言中,运算符可以分为算数运算符、关系运算符、位运算符、逻辑运算符和赋值运算符等等,在编写C语言程序时,运算符的使用十分普遍。
在C语言中,不同的运算符被赋予不同的优先级,这意味着当程序员利用运算符构建算式时,会优先按照运算符优先级进行求值。
C 语言中定义的运算符优先级及其意义如下:1. 一元运算符:当一元运算符出现时,它会优先于双目运算符进行求值。
例如,“+”会优先于“+”,而“!”会优先于“&&”。
2.目运算符:这是C语言中最常用的运算符,它可以对两个操作数进行求值,该类运算符优先级按从高到低分别为:(1)算术运算符:“*”,“/”,“%”;(2)关系运算符:“>”,“,“>=”,“<=”,“==”,“!=”;(3)逻辑运算符:“&&”,“||”,“^”;(4)赋值运算符:=”;(5)减号运算符:“-”;(6)加号运算符:“+”。
3. 三元运算符:其优先级介于一元运算符和双目运算符之间。
在C语言程序中,当出现多个运算符并列时,程序员需要按照运算符的优先级顺序来计算,而不是从左往右依次计算。
因此,了解C 语言运算符优先级非常重要,可以避免程序错误。
例如,假如A=3,B=4,C=5,则在C语言中,表达式A*B+C的值将是17,而不是25,因为乘号“*”优先于加号“+”。
如果程序员未按照优先级计算,则表达式的值将出错。
因此,理解C语言中运算符优先级的重要性,程序员在编写程序时应注意将算式中出现的运算符按其优先级顺序排列,以免出现错误或歧义。
此外,不止是C语言中,众多编程语言中也存在运算符优先级,程序员在开发程序时,要掌握各种编程语言运算符优先级,以便更准确地开发程序。
C语言中运算符的优先级及结合顺序一、概述C语言是一种广泛应用的计算机编程语言,学习C语言的运算符的优先级及结合顺序对于理解程序的执行过程和写出高效的代码至关重要。
本文将针对C语言中常见的运算符的优先级和结合顺序进行详细的介绍和解析,希望能对读者有所帮助。
二、运算符的优先级1. 括号优先级括号具有最高的优先级,括号中的表达式会先于其他运算符进行计算,其优先级最高。
例如:```int a = 3, b = 4, c = 5;int result = (a + b) * c;```先计算括号中的值,再进行乘法运算。
2. 单目运算符优先级单目运算符的优先级次之,包括正负号、递增递减等运算符。
例如: ```int a = 5;int result = -a;先执行取反操作。
3. 算术运算符的优先级在算术运算符中,乘除法的优先级高于加减法,同级运算符从左到右结合。
例如:```int result = 3 + 4 * 5 / 2;```首先计算乘除法,再进行加减法。
4. 关系运算符的优先级关系运算符(>、<、==等)的优先级次于算术运算符,且具有相同的优先级。
例如:```int a = 3, b = 4, c = 5;int result = a + b > c;```先计算加法,再进行比较运算。
5. 逻辑运算符的优先级逻辑与()、逻辑或(||)等逻辑运算符的优先级相对较低,且具有相同的优先级。
例如:int a = 4, b = 5, c = 6;int result = a > 3 b < 6 || c == 6;```逻辑与的优先级高于逻辑或,但都低于其他运算符。
6. 赋值运算符的优先级赋值运算符的优先级最低,且右结合。
例如:```int a = 5;a += 3;```将3加到a上再赋值给a。
三、运算符的结合顺序1. 左结合性大多数运算符都是左结合的,即从左向右进行计算。
例如: ```int result = 3 + 4 + 5;```从左向右进行加法运算。
c运算符优先级顺序C语言中的运算符优先级顺序是程序员在编写代码时必须要掌握的知识之一。
正确理解和使用运算符优先级可以帮助我们编写出更加高效、准确的代码。
本文将从优先级最高的运算符开始,逐级介绍C语言中的运算符优先级顺序。
1. 后缀运算符:在C语言中,后缀运算符的优先级最高。
例如,函数调用运算符()和数组访问运算符[]都属于后缀运算符。
例如,表达式a[3]和func()中的[]和()就是后缀运算符。
2. 前缀运算符:前缀运算符的优先级次于后缀运算符。
例如,逻辑非运算符!和递增递减运算符++和--都属于前缀运算符。
例如,表达式!flag和++i中的!和++就是前缀运算符。
3. 强制类型转换运算符:强制类型转换运算符的优先级次于前缀运算符。
例如,(int)num和(double)value中的()就是强制类型转换运算符。
4. 乘除取模运算符:乘除取模运算符的优先级次于强制类型转换运算符。
例如,表达式a * b、c / d和e % f中的*、/和%就是乘除取模运算符。
5. 加减运算符:加减运算符的优先级次于乘除取模运算符。
例如,表达式a + b和c - d中的+和-就是加减运算符。
6. 移位运算符:移位运算符的优先级次于加减运算符。
例如,表达式a << 2和b >> 3中的<<和>>就是移位运算符。
7. 关系运算符:关系运算符的优先级次于移位运算符。
例如,表达式a < b、c >= d和e == f中的<、>=和==就是关系运算符。
8. 相等运算符:相等运算符的优先级次于关系运算符。
例如,表达式a == b和c != d中的==和!=就是相等运算符。
9. 位与运算符:位与运算符的优先级次于相等运算符。
例如,表达式a & b中的&就是位与运算符。
10. 位异或运算符:位异或运算符的优先级次于位与运算符。
例如,表达式a ^ b中的^就是位异或运算符。
在C语言中,运算符的优先级顺序如下(从高到低):
1. 括号运算符:()
2. 数组下标运算符:[]
3. 结构体成员运算符:.
4. 指针成员运算符:->
5. 后缀递增/递减运算符:++,--
6. 前缀递增/递减运算符:++,--
7. 一元运算符:+(正号),-(负号),!(逻辑非),~(按位取反),*(指针取值),&(取地址),sizeof
8. 类型转换运算符:(type)
9. 乘法运算符:*,/,%
10. 加法运算符:+,-
11. 移位运算符:<<,>>
12. 关系运算符:>,>=,<,<=
13. 相等运算符:==,!=
14. 按位与运算符:&
15. 按位异或运算符:^
16. 按位或运算符:|
17. 逻辑与运算符:&&
18. 逻辑或运算符:||
19. 条件运算符:?:
20. 赋值运算符:=,+=,-=,*=,/=,%=,<<=,>>=,&=,^=,|=
21. 逗号运算符:,
请注意,优先级较高的运算符会先于优先级较低的运算符进行计算。
当有多个运算符出现时,可以使用括号来明确指定计算顺序,从而避免由于优先级导致的歧义或错误。
运算符号的优先级别结合性有两种,⼀种是⾃左⾄右,另⼀种是⾃右⾄左,⼤部分运算符的结合性是⾃左⾄右,只有单⽬运算符、三⽬运算符的赋值运算符的结合性⾃右⾄左。
优先级有15种。
记忆⽅法如下:记住⼀个最⾼的:构造类型的元素或成员以及⼩括号。
记住⼀个最低的:逗号运算符。
剩余的是⼀、⼆、三、赋值。
意思是单⽬、双⽬、三⽬和赋值运算符。
在诸多运算符中,⼜分为:算术、关系、逻辑。
两种位操作运算符中,移位运算符在算术运算符后边,逻辑位运算符在逻辑运算符的前⾯。
再细分如下:算术运算符分 *,/,%⾼于+,-。
关系运算符中,》,》=,《,〈=⾼于==,!=。
逻辑运算符中,除了逻辑求反(!)是单⽬外,逻辑与(&&)⾼于逻辑或(||)。
逻辑位运算符中,除了逻辑按位求反(~)外,按位与(&)⾼于按位半加(^),⾼于按位或(|)。
这样就将15种优先级都记住了,再将记忆⽅法总结如下:去掉⼀个最⾼的,去掉⼀个最低的,剩下的是⼀、⼆、三、赋值。
双⽬运算符中,顺序为算术、关系和逻辑,移位和逻辑位插⼊其中。
为什么后缀++⽐*操作符优先级⾼却后对p加1?” ——*p++、*++p、++*p和(*p)++中的操作符优先级问题假设int a[10]p1=a;那么*p++=1;*++p=2;++*p=3;(*p)++=4;分别应该怎么按照优先级别运算?按照书上的说法++ (后置) >++(前置) >* 解引⽤⽤ > = 等于*p++ 是否应该是现算(p++) 在算* 最后赋值?求所有的正确的算法和解答---------------------------------------------------------------++(后缀)属于“后缀操作符”,其优先级⾼于“前缀操作符”。
* 和++(前缀)都属于“前缀操作符”,优先级相同,按从左到右结合的顺序。
都⾼于赋值运算符。
所以:*p++=1 相当于 (*(p++)) = 1,也就是说++操作于p上,结果为p原来的值,再作*运算,去除引⽤,再赋为1。
c语言运算符优先级规律
C语言运算符的优先级规律如下:
1. 括号优先级最高,可以用括号改变运算次序。
2. 单目运算符的优先级次之,例如取地址符&、取值符*、逻辑非!等。
3. 算术运算符、关系运算符、逻辑运算符的优先级相对较低,左结合性。
4. 赋值运算符的优先级相对较低,右结合性。
5. 条件运算符?:的优先级低于逗号运算符,从右到左结合。
6. 逗号运算符的优先级最低,左结合性。
需要注意的是,如果两个运算符的优先级相同,那么就要根据结合性来确定运算次序,例如算术运算符和位运算符的优先级相同,都是从左到右结合。
运算符优先级c语言C语言中的运算符优先级是指在表达式中,不同运算符的执行顺序。
在C语言中,有很多种运算符,每种运算符都有自己的优先级,这些优先级决定了表达式中各个运算符的执行顺序。
在编写程序时,了解运算符优先级是非常重要的,因为它可以帮助我们正确地编写表达式,避免出现错误。
C语言中的运算符优先级可以分为以下几个级别:1. 括号运算符:括号运算符具有最高的优先级,它可以改变表达式中其他运算符的执行顺序。
在表达式中,括号中的运算符优先执行,然后再执行括号外的运算符。
2. 单目运算符:单目运算符是指只有一个操作数的运算符,例如取反运算符(!)、正负号运算符(+、-)等。
单目运算符的优先级高于双目运算符,但低于括号运算符。
3. 乘除运算符:乘除运算符包括乘法运算符(*)和除法运算符(/),它们的优先级高于加减运算符,但低于括号运算符和单目运算符。
4. 加减运算符:加减运算符包括加法运算符(+)和减法运算符(-),它们的优先级低于乘除运算符,但高于赋值运算符。
5. 移位运算符:移位运算符包括左移运算符(<<)和右移运算符(>>),它们的优先级低于加减运算符,但高于比较运算符。
6. 关系运算符:关系运算符包括小于运算符(<)、大于运算符(>)、小于等于运算符(<=)、大于等于运算符(>=)等,它们的优先级低于移位运算符,但高于相等运算符。
7. 相等运算符:相等运算符包括等于运算符(==)和不等于运算符(!=),它们的优先级低于关系运算符,但高于位运算符。
8. 位运算符:位运算符包括按位与运算符(&)、按位或运算符(|)、按位异或运算符(^)等,它们的优先级低于相等运算符,但高于逻辑运算符。
9. 逻辑运算符:逻辑运算符包括逻辑与运算符(&&)、逻辑或运算符(||)和逻辑非运算符(!),它们的优先级低于位运算符,但高于条件运算符。
10. 条件运算符:条件运算符是指三目运算符(?:),它的优先级最低,但高于赋值运算符。
运算符优先级由高到低的顺序
运算符优先级顺序是:! >算术运算符>关系运算符>&&>||>赋值运算符。
1.运算符优先级顺序:同一优先级的运算符,运算次序由结合方向所决定的。
简单的记就是:! >算术运算符>关系运算符>&&>||>赋值运算符。
结合性:2、13 、14是从右至左其他都是从左至右。
2.优先级从上到下依次递减,最上面具有最高的优先级,逗号操作符具有最低的优先级。
表达式的结合次序取决于表达式中各种运算符的优先级。
优先级高的运算符先结合,优先级低的运算符后结合,同一行中的运算符的优先级相同。
3.C语言中大多数运算符的结合性都是从左往右,只有三个运算符是从右往左的。
一个是单目运算符,另一个是三目运算符,还有一个就是双目运算符中的赋值运算符。
运算符的“结合性”也不需要死记硬背,在不断使用中就记住了。
— 1 —。
运算符号的运用和优先级运算符是编程语言中用于执行特定数学或逻辑操作的符号。
在编程中,正确使用运算符和了解其优先级非常重要,以确保程序的正确性和效率。
本文将重点介绍运算符的运用和优先级。
一、算术运算符算术运算符用于执行基本数学运算,包括加法、减法、乘法和除法。
下面是常见的算术运算符及其示例:1. 加法运算符(+):用于将两个数相加,例如:a + b。
2. 减法运算符(-):用于从一个数中减去另一个数,例如:a - b。
3. 乘法运算符(*):用于将两个数相乘,例如:a * b。
4. 除法运算符(/):用于将一个数除以另一个数,例如:a / b。
5. 取余运算符(%):用于返回两个数相除的余数,例如:a % b。
二、赋值运算符赋值运算符用于将一个值或表达式赋给变量。
常见的赋值运算符包括:1. 简单赋值运算符(=):将一个值赋给一个变量,例如:a = 10。
2. 加法赋值运算符(+=):将右侧的值加到左侧的变量上,并将结果赋给左侧的变量,例如:a += 5(等效于 a = a + 5)。
3. 减法赋值运算符(-=):将右侧的值从左侧的变量中减去,并将结果赋给左侧的变量,例如:a -= 5(等效于 a = a - 5)。
三、比较运算符比较运算符用于比较两个值的大小或关系。
常见的比较运算符包括:1. 相等运算符(==):用于判断两个值是否相等,例如:a == b。
2. 不等运算符(!=):用于判断两个值是否不相等,例如:a != b。
3. 大于运算符(>):用于判断一个值是否大于另一个值,例如:a > b。
4. 小于运算符(<):用于判断一个值是否小于另一个值,例如:a < b。
四、逻辑运算符逻辑运算符用于执行逻辑操作,例如对布尔值进行判断和组合。
常见的逻辑运算符包括:1. 与运算符(&&):用于检查两个条件是否同时成立,例如:a&& b。
2. 或运算符(||):用于检查两个条件是否至少有一个成立,例如:a || b。
c语言运算符号优先级表
C语言运算符优先级从高到低大致如下:
1.括号()
2.成员运算符.
3.长度运算符sizeof
4.强制类型转换(类型)
5.自增自减运算符++、--
6.负号运算符-
7.类型转换运算符(数据类型)
8.指针运算符和取地址运算符*、&
9.按位取反运算符~
10.乘法运算符*
11.除法运算符/
12.求余运算符%
13.加法运算符+
14.减法运算符-
15.左移动运算符<<
16.右移动运算符>>
17.关系运算符<、>、<=、>=
18.等于运算符==
19.不等于运算符!=
20.按位与运算符&
21.按位异或运算符^
22.按位或运算符|
23.逻辑与运算符&&
24.逻辑或运算符||
25.条件运算符?:
26.三目条件运算符:
27.赋值运算符=、+=、-=、*=、/=等。
请注意,这只是大致的优先级顺序,某些情况下,具体的优先级可能会因编译器或操作数类型的不同而有所差异。
C语言中的运算优先级C语言是一门广泛应用于计算机编程领域的高级编程语言,掌握其运算优先级是编写高效代码的关键之一。
在本文中,我们将深入探讨C语言中的运算优先级,帮助读者理解和正确使用不同运算符的优先级规则。
一、基本运算符和优先级在C语言中,常用的基本运算符包括算术运算符、关系运算符、逻辑运算符等。
这些运算符在表达式计算时有着不同的优先级,下面将给出它们的优先级规则:1. 括号运算符:括号具有最高的优先级,用于改变表达式的计算顺序。
2. 一元运算符:一元运算符的优先级稍低于括号运算符,包括取负运算符、递增递减运算符等。
3. 乘法和除法运算符:乘法和除法运算符的优先级高于加法和减法运算符。
4. 加法和减法运算符:加法和减法运算符的优先级较低,是所有运算符中优先级最低的。
根据以上规则,我们可以写出如下表达式的计算结果:示例1:int result = 2 + 3 * 4 - 5 / 2; // 乘法和除法运算优先于加法和减法运算// result = 2 + (3 * 4) - (5 / 2) = 2 + 12 - 2 = 12示例2:int result = 5 * 2 / 4 + 3 - 1; // 乘法和除法运算优先于加法和减法运算// result = (5 * 2) / 4 + 3 - 1 = 10 / 4 + 3 - 1 = 2 + 3 - 1 = 4二、复合运算符的优先级除了基本运算符,C语言还提供了一些复合运算符,如赋值运算符、逻辑运算符等。
这些复合运算符的优先级与基本运算符相比略有不同,下面是一些常见复合运算符的优先级规则:1. 赋值运算符:赋值运算符的优先级较低,大部分运算符优先于赋值运算符。
2. 逻辑运算符:逻辑运算符中的逻辑与 `&&` 优先级高于逻辑或 `||`。
3. 条件运算符:条件运算符 `? :` 的优先级低于大部分运算符,但高于赋值运算符。
示例3:int a = 5;int b = 2;int c = 3;int result = a > b && b > c ? a : b + c; // 逻辑与 `&&` 优先级高于条件运算符 `? :`// result = (a > b) && (b > c) ? a : (b + c) = (5 > 2) && (2 > 3) ? 5 : (2 + 3) = 1 ? 5 : 5 = 5三、位运算符和优先级在C语言中,还存在一些用于位操作的运算符,如位与 `&`、位或`|`、位异或 `^` 等。
c语言的优先级顺序表
C语言的运算符优先级顺序如下:
1. 括号(Parentheses)
2. 一元运算符(Unary Operators)
3. 乘法运算符*、除法运算符/、求余运算符%
4. 加法运算符+、减法运算符-
5. 移位运算符<<、>>
6. 大于运算符>、大于等于运算符>=、小于运算符<、小于等于运算符<=
7. 等于运算符==、不等于运算符!=
8. 按位与运算符&
9. 按位异或运算符^
10. 按位或运算符|
11. 逻辑与运算符&&
12. 逻辑或运算符||
13. 三目条件运算符? :
14. 赋值运算符=、+=、-=、*=、/= 等
15. 逗号运算符,
注意:尽管这个顺序大致上是对的,但是不同的编译器可能会有些许的差异,所以建议在编写代码时始终使用括号来明确优先级。
c语言运算符的优先顺序
C语言中,运算符的优先级是指运算符的执行顺序。
在一个表达式中,如果同时存在多个运算符,那么先执行优先级高的运算符,再执行优先级低的运算符。
如果优先级相同,则按照从左到右的顺序执行。
下面是C语言中常见运算符的优先级从高到低的顺序:
1. ():括号优先级最高,可以改变其他运算符的优先级。
2. !、~、++、--:逻辑非、按位取反、自增、自减的优先级比较高。
3. *、/、%:乘、除、取模的优先级依次降低。
4. +、-:加、减的优先级依次降低。
5. <<、>>:左移、右移的优先级比加减低一级。
6. <、<=、>、>=:比较运算符的优先级比移位运算符低。
7. ==、!=:等于、不等于的优先级比大小关系运算符低。
8. &:按位与的优先级比逻辑关系运算符低。
9. ^:按位异或的优先级比按位与低。
10. |:按位或的优先级最低。
以上是C语言中运算符的优先级顺序。
在使用时,我们可以根据优先级自行添加或省略括号,以达到预期的运算结果。
- 1 -。
在计算机语言中,各种运算符之间的优先级运算规则是非常重要的,它决定了表达式的计算顺序和结果。
了解这些规则对于编写高效、准确的代码至关重要。
本文将全面探讨计算机语言中各种运算符之间的优先级规则,帮助你更深入地理解这一重要主题。
1. 加减乘除的优先级在计算机语言中,加减乘除是我们最常见的四则运算,它们之间存在一定的优先级规则。
一般来说,乘除运算的优先级要高于加减运算。
这意味着在同一个表达式中,计算机会先处理乘除运算,然后再处理加减运算。
对于表达式2+3*4,计算机会先计算3*4得到12,然后再加上2,最终的结果是14。
这个优先级规则在编写代码时需要特别注意,以避免产生不必要的错误。
2. 括号的优先级在计算机语言中,括号具有最高的优先级。
如果表达式中有括号,计算机会优先计算括号中的部分,然后再进行其他运算。
括号可以用来改变运算的顺序,使得表达式的计算结果更符合预期。
对于表达式(2+3)*4,计算机会先计算括号中的2+3得到5,然后再乘以4,最终的结果是20。
3. 逻辑运算符的优先级除了四则运算,计算机语言中还存在逻辑运算,比如与(&&)、或(||)、非(!)等。
这些逻辑运算符也有自己的优先级规则。
一般来说,非的优先级最高,然后是与,最后是或。
这意味着在同一个表达式中,计算机会先处理非运算,然后是与运算,最后是或运算。
4. 位运算符的优先级位运算符是在计算机语言中用来处理二进制数据的重要工具。
与逻辑运算符类似,位运算符也有自己的优先级规则。
一般来说,移位运算的优先级最高,然后是位与、位或等运算。
总结回顾深入了解各种运算符之间的优先级规则对于编写高效的代码至关重要。
在编写表达式时,我们需要仔细考虑各种运算符之间的优先级关系,以保证表达式的计算结果符合预期。
及时使用括号来明确表达式的计算顺序也是一种良好的编程习惯。
通过本文的探讨,希望读者可以更全面、深刻地理解计算机语言中各种运算符之间的优先级规则,从而提高编写代码的准确性和效率。
C语言运算符C语言运算符1级优先级左结合() 圆括号[] 下标运算符-> 指向结构体成员运算符. 结构体成员运算符2级优先级右结合! 逻辑非运算符~ 按位取反运算符++ 前缀增量运算符-- 前缀增量运算符+ 正号运算符- 负号运算符(类型) 类型转换运算符* 指针运算符& 地址与运算符sizeof 长度运算符3级优先级左结合* 乘法运算符/ 除法运算符% 取余运算符4级优先级左结合+ 加法运算符- 减法运算符5级优先级左结合<< 左移运算符>> 右移运算符6级优先级左结合<、<=、>、>= 关系运算符7级优先级左结合== 等于运算符!= 不等于运算符8级优先级左结合& 按位与运算符9级优先级左结合^ 按位异或运算符10级优先级左结合| 按位或运算符11级优先级左结合&& 逻辑与运算符12级优先级左结合|| 逻辑或运算符13级优先级右结合? : 条件运算符14级优先级右结合= += -= *= /= %= &= ^= |= <<= >>= 全为赋值运算符15级优先级左结合,逗号运算符运算符优先级优先级从上到下依次递减,最上面具有最高的优先级,逗号操作符具有最低的优先级。
所有的优先级中,只有三个优先级是从右至左结合的,它们是单目运算符、条件运算符、赋值运算符。
其它的都是从左至右结合。
具有最高优先级的其实并不算是真正的运算符,它们算是一类特殊的操作。
()是与函数相关,[]与数组相关,而->及.是取结构成员。
其次是单目运算符,所有的单目运算符具有相同的优先级,因此在我认为的真正的运算符中它们具有最高的优先级,又由于它们都是从右至左结合的,因此*p++与*(p++)等效是毫无疑问的。
另外在C语言里没有前置后置之分因为++ -- 是右结合所以右侧优先运算表现为"后置优先级比较高" 的假象前置和后置的区分是因为运算符重载而后加入C++的接下来是算术运算符,*、/、%的优先级当然比+、-高了。
第一种记忆方法:
你可以按照熟悉程度来记忆:
先乘除后加减:* / % 在第3级;+ - 在第4级;
括号仍旧是最优先的,和以前学习的概念一样,在第1级;
最第一级是逗号,组建逗号表达式用的。
第15级;
我们还熟悉的是大于,小于,大于等于,小于等于,年年有鱼,六六大顺,那么在第6级;
顺便记忆不等于!= ==,在第7级;
逻辑或||和逻辑与&&要交叉记忆,长的像11的却在12级,另一个就在11级。
在我们这个表里,大部分都是双目运算符,那么现在来看看特殊的,单目运算符和三目运算符,单目运算符在第2级,三目运算符?:在第13级。
还有一个很熟悉的赋值号=,复合赋值号+=,地位很低,往往都是其他运算执行完毕后,才执行它,故在第14级。
经过一番努力,我们基本上记住了1,2,3,4,6,7,11,12,13,14,15级,初次记忆来说,已经很成功了。
第二种方法:记忆《秋夜打渔图》
秋夜打渔图
扩大成甲鱼,大小不等鱼;
位于一伙伙,渔火三服豆;
意义:渔夫捕鱼,有甲鱼,大小不等的鱼,都在一伙伙渔夫的手里,河面上有星星点点的渔火,还有丰收的大豆,整个呈现出丰收的景象;
1扩:代表括号;
2大:谐音,单,单目运算符;
3成:谐音:乘号;
4甲:谐音:加号;
5鱼:谐音:移动,左移右移;
6大小:代表大于号,小于号,还有大于等于号,小于等于号;
7不等鱼:代表不等于号和等于号;
8位于:谐音:按位与&;
9(位)一伙:谐音:按位异或^;
10(位)伙:谐音:按位或|;
11渔:谐音:逻辑与,&&;
12火:谐音:逻辑或,||;
13三:三目运算符?:;
14服:谐音:赋值运算符;
15豆:逗号运算符;。