C语言运算符优先级别
c语言运算优先级及运算顺序
c语言运算优先级及运算顺序
C语言中的运算符都有各自的优先级,一般来说,优先级高的运算符先计算,优先级低的运算符后计算。以下是常见运算符的优先级(从高到低):
1. 括号运算符,例如:( )。
2. 单目运算符,例如:++、--、+、-、!。
3. 算术运算符,例如:*、/、%、+、-。
4. 移位运算符,例如:<<、>>。
5. 关系运算符,例如:>、<、>=、<=。
6. 相等运算符,例如:==、!=。
7. 位运算符,例如:&、|、^、~。
8. 逻辑运算符,例如:&&、||。
9. 条件运算符,例如:?:。
10. 赋值运算符,例如:=、+=、-=、*=、/=、%=、<<=、>>=、&=、^=、|=。
在计算时,优先级高的运算符先进行计算,如果两个运算符优先级相同,则按照从左到右的顺序进行计算。
C语言运算符优先级
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;
c语言 运算符 优先级别
c语言运算符优先级别
C语言运算符的优先级别是非常重要的,因为它能够影响到表达式的计算结果。在C语言中,运算符的优先级别是按照一定的规则来确定的,一般来说,优先级别高的运算符会先进行运算,而优先级别低的运算符会后进行运算。
下面是C语言运算符的优先级别从高到低的列表:
1.圆括号 ():圆括号可以改变运算符的优先级别,括号内的表达式优先级别最高。
2.单目运算符(一元运算符):单目运算符只操作一个操作数,它的优先级别高于双目运算符。
3.乘法运算符 *、除法运算符 /、求余运算符 %:乘法、除法和求余运算符的优先级别相同,比加法和减法运算符的优先级别要高。
4.加法运算符 +、减法运算符 -:加法和减法运算符的优先级别相同,但比赋值运算符和比较运算符的优先级别要低。
5.移位运算符 <<、>>:移位运算符的优先级别比比较运算符和位运算符的优先级别要低。
6.关系运算符 <、<=、>、>=:关系运算符的优先级别比等于运算符和位运算符的优先级别要低。
7.等于运算符 ==、!=:等于运算符的优先级别比位运算符的优先级别要低。
8.按位与运算符 &:按位与运算符的优先级别比按位异或运算符和按位或运算符的优先级别要低。
9.按位异或运算符 ^:按位异或运算符的优先级别比按位或运算符的优先级别要低。
10.按位或运算符 |:按位或运算符的优先级别最低,比赋值运算符的优先级别要低。
在表达式中,如果有多个运算符同时出现,就需要按照优先级别来确定运算的顺序。如果不确定优先级别,可以使用圆括号来分组,以保证表达式的正确性。
c语言中运算符的优先级
c语言中运算符的优先级
在C语言中,运算符的优先级决定了表达式中运算符的计算顺序。以下是C语言中常见的运算符按照优先级从高到低的顺序:
1. 括号:`()`,用于改变运算的优先级或明确运算顺序。
2. 单目运算符:`++`、`--`、`+`、`-`、`!`、`~`、`sizeof`等,用于对单个操作数进行操作。
3. 乘法、除法和求模运算符:`*`、`/`、`%`,用于执行乘法、除法和求模运算。
4. 加法和减法运算符:`+`、`-`,用于执行加法和减法运算。
5. 移位运算符:`<<`、`>>`,用于执行位的左移和右移操作。
6. 关系运算符:`<`、`>`、`<=`、`>=`、`==`、`!=`,用于比较两个操作数之间的关系。
7. 位运算符:`&`、`|`、`^`,用于执行位与、位或和位异或操作。
8. 逻辑运算符:`&&`、`||`,用于执行逻辑与和逻辑或操作。
9. 条件运算符:`? :`,用于根据条件选择不同的值。
10. 赋值运算符:`=`, `+=`, `-=`, `*=`, `/=`, `%=` 等,用于给变量赋值。
11. 逗号运算符:`,`,用于分隔多个表达式,并返回最后一个表达式的值。
请注意,这只是常见运算符的优先级示例,具体的优先级可能受到运算符结合性和上下文的影响。在编写表达式时,建议使用括号明确运算顺序,避免产生歧义。
c语言运算的优先级
c语言运算的优先级
C语言运算的优先级
在C语言中,运算符的优先级决定了表达式中各个运算符的执行顺序。正确理解和使用运算符的优先级是编写高效、准确的代码的关键之一。本文将介绍C语言中常见的运算符及其优先级,以帮助读者正确理解和使用运算符。
1. 括号运算符 ()
括号运算符具有最高的优先级,它用于改变运算的次序。在表达式中使用括号可以明确指定某些运算的执行顺序,提高代码的可读性。例如:
a = (
b + c) * d;
2. 后缀运算符 ++、--
后缀运算符 ++ 和 -- 用于对变量进行自增或自减操作。它们的优先级高于大多数其他运算符,但低于括号运算符。例如:
a = b++ + c;
3. 前缀运算符 ++、--
前缀运算符 ++ 和 -- 也用于对变量进行自增或自减操作,但它们的优先级更高。例如:
a = ++
b + c;
4. 一元运算符 +、-
一元运算符 + 和 - 用于对表达式进行正负号的操作。它们的优先级比大多数其他运算符低,但高于乘除运算符。例如:
a = -
b * c;
5. 乘除运算符 *、/
乘除运算符* 和/ 用于进行乘法和除法运算。它们的优先级高于加减运算符,但低于括号运算符和前缀运算符。例如:
a =
b *
c / d;
6. 加减运算符 +、-
加减运算符 + 和 - 用于进行加法和减法运算。它们的优先级较低,但高于赋值运算符。例如:
a =
b +
c - d;
7. 移位运算符 <<、>>
移位运算符<< 和>> 用于对二进制数进行左移和右移操作。它们的优先级比加减运算符低,但高于位运算符和逻辑运算符。例如:
c语言中的运算符的优先级
c语言中的运算符的优先级
C语言中的运算符优先级
在C语言中,运算符的优先级决定了表达式中各个运算符的计算顺序。了解这些优先级可以帮助程序员正确地编写程序,避免表达式计算出错。本文将按照运算符的优先级从高到低的顺序,介绍C语言中常用的运算符及其使用方法。
一、括号运算符()
括号运算符是最高优先级的运算符,它用于改变表达式中的计算顺序。在一个表达式中,被括号包围的部分会被优先计算,然后将结果用于整个表达式的计算。
例如,表达式 (3 + 4) * 2 的结果是14。括号中的3 + 4会先计算得到7,然后再乘以2得到14。
二、一元运算符
一元运算符是对单个操作数进行操作的运算符。在C语言中,常见的一元运算符有正号+和负号-。它们的优先级比较高,但比括号运算符低。
例如,表达式 -5 的结果是-5,表达式 +3 的结果是3。
三、乘法、除法和取模运算符 * / %
乘法运算符*、除法运算符/和取模运算符%具有相同的优先级,比一元运算符的优先级更低。
例如,表达式 10 / 2 的结果是5,表达式 10 % 3 的结果是1。
四、加法和减法运算符 + -
加法运算符+和减法运算符-具有相同的优先级,比乘法、除法和取模运算符的优先级更低。
例如,表达式 5 + 3 - 2 的结果是6。
五、关系运算符 < <= > >=
关系运算符用于比较两个值的大小关系,返回一个布尔值(真或假)。关系运算符的优先级比加法和减法运算符的优先级更低。
例如,表达式 5 < 3 的结果是假(0),表达式 5 >= 3 的结果是真(1)。
运算符优先级c语言
运算符优先级c语言
C语言中的运算符优先级是指在表达式中,不同运算符的执行顺序。在C语言中,有很多种运算符,每种运算符都有自己的优先级,这些优先级决定了表达式中各个运算符的执行顺序。在编写程序时,了解运算符优先级是非常重要的,因为它可以帮助我们正确地编写表达式,避免出现错误。
C语言中的运算符优先级可以分为以下几个级别:
1. 括号运算符:括号运算符具有最高的优先级,它可以改变表达式中其他运算符的执行顺序。在表达式中,括号中的运算符优先执行,然后再执行括号外的运算符。
2. 单目运算符:单目运算符是指只有一个操作数的运算符,例如取反运算符(!)、正负号运算符(+、-)等。单目运算符的优先级高于双目运算符,但低于括号运算符。
3. 乘除运算符:乘除运算符包括乘法运算符(*)和除法运算符(/),它们的优先级高于加减运算符,但低于括号运算符和单目运算符。
4. 加减运算符:加减运算符包括加法运算符(+)和减法运算符(-),它们的优先级低于乘除运算符,但高于赋值运算符。
5. 移位运算符:移位运算符包括左移运算符(<<)和右移运算符
(>>),它们的优先级低于加减运算符,但高于比较运算符。
6. 关系运算符:关系运算符包括小于运算符(<)、大于运算符(>)、小于等于运算符(<=)、大于等于运算符(>=)等,它们的优先级低于移位运算符,但高于相等运算符。
7. 相等运算符:相等运算符包括等于运算符(==)和不等于运算符(!=),它们的优先级低于关系运算符,但高于位运算符。
c语言运算符的优先顺序
在C语言中,运算符是按照优先级顺序来进行运算的。如果有多个运算符在同一个表达式中出现,优先级高的运算符会先进行运算,优先级低的运算符会后进行运算。以下是C语言中各种运算符的优先级,从高到低排列:
1. ( ):括号运算符
2. [ ]:数组下标运算符
3. .:结构体成员访问运算符
4. ->:指向结构体成员的指针运算符
5. !、~、++、--、+、-:逻辑非、位求反、自增、自减、正号、负号运算符
6. *、/、%:乘法、除法、取模运算符
7. +、-:加法、减法运算符
8. <<、>>:左移、右移运算符
9. <、<=、>、>=:小于、小于等于、大于、大于等于运算符
10. ==、!=:相等、不相等运算符
11. &:按位与运算符
12. ^:按位异或运算符
13. |:按位或运算符
14. &&:逻辑与运算符
15. ||:逻辑或运算符
16. ? ::条件运算符
17. =、+=、-=、*=、/=、%=、<<=、>>=、&=、^=、|=:赋值、复合赋值运算符
在运算符优先级相同的情况下,按照从左到右的顺序进行运算。当然,在实际代码编写和阅读中,为了避免产生歧义和误解,建议在表达式中较为复杂时,使用括号明确运算的先后顺序。
c 位运算的优先级
c 位运算的优先级
C语言中的位运算是一种基于二进制位的操作方法,它可以对数值的二进制位进行逻辑运算、移位操作等。在C语言中,位运算的优先级是从高到低依次为逻辑非(~)、左移(<<)、右移(>>)、位与(&)、位异或(^)和位或(|)。
1. 逻辑非运算符(~):逻辑非运算符是一元运算符,用于对操作数的每个二进制位取反。例如,对于二进制数1010,经过逻辑非运算后,变为0101。逻辑非运算符的优先级最高。
2. 左移运算符(<<):左移运算符是二元运算符,用于将操作数的二进制位向左移动指定的位数。例如,对于二进制数1010,经过左移2位后,变为101000。左移运算符的优先级次高。
3. 右移运算符(>>):右移运算符是二元运算符,用于将操作数的二进制位向右移动指定的位数。例如,对于二进制数1010,经过右移2位后,变为0010。右移运算符的优先级次高于位与运算符。
4. 位与运算符(&):位与运算符是二元运算符,用于对两个操作数的二进制位进行与运算。例如,对于二进制数1010和1100,经过位与运算后,得到的结果为1000。位与运算符的优先级次低。
5. 位异或运算符(^):位异或运算符是二元运算符,用于对两个操作数的二进制位进行异或运算。例如,对于二进制数1010和1100,
经过位异或运算后,得到的结果为0110。位异或运算符的优先级最低。
6. 位或运算符(|):位或运算符是二元运算符,用于对两个操作数的二进制位进行或运算。例如,对于二进制数1010和1100,经过位或运算后,得到的结果为1110。位或运算符的优先级最低。
c 语言运算符优先级
在C 语言中,运算符具有不同的优先级。以下是常见运算符的优先级从高到低的顺序:
1. 括号:()
2. 数组下标:[]
3. 结构体成员访问:.
4. 指针成员访问:->
5. 后缀递增/递减:++、--
6. 前缀递增/递减:++、--
7. 一元操作符:+、-、!、~、*、&、sizeof、(type)
8. 乘法和除法:*、/、%
9. 加法和减法:+、-
10. 移位操作符:<<、>>
11. 关系操作符:>、<、>=、<=
12. 相等性操作符:==、!=
13. 位与操作符:&
14. 位异或操作符:^
15. 位或操作符:|
16. 逻辑与操作符:&&
17. 逻辑或操作符:||
18. 条件(三元)操作符:? :
19. 赋值操作符:=、+=、-=、*=、/=、%=、<<=、>>=、&=、^=、|=
20. 逗号操作符:,
请注意,以上仅列举了常见运算符的优先级,并非详尽无遗。在表达式中,可以使用
括号来明确指定运算符的优先级和结合性。
C语言中的运算优先级
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语言还提供了一些复合运算符,如赋值运算符、逻辑运算符等。这些复合运算符的优先级与基本运算符相比略有不同,下面是一些常见复合运算符的优先级规则:
c语言优先级表
C语言优先级表
1. 简介
C语言是一种通用的高级编程语言,广泛应用于系统软件
和应用软件的开发中。在C语言中,运算符的优先级非常重要,它决定了表达式中各个运算符的执行顺序。正确理解C
语言运算符的优先级,可以避免因为运算符执行顺序不当而引发的程序错误。
本文将介绍C语言中各种运算符的优先级及其示例用法,
以方便读者理解和应用。
2. 运算符的优先级
C语言中的运算符根据其执行优先级的高低,可以分为多
个级别。下面是C语言中常用的运算符按照优先级从高到低
的排序:
1.后缀运算符:()、[]、.、->例如:a[3]、b-
>name
2.一元运算符:+、-、++、--、!、~、&、*等例如:
-a、++b
3.Sizeof运算符、类型转换运算符
4.二元运算符:*、/、%例如:a * b
5.二元运算符:+、-例如:a + b
6.移位运算符:<<、>>例如:a << 2
7.关系运算符:<、<=、>、>=例如:a > b
8.关系运算符:==、!=例如:a == b
9.位运算符:&、^、|例如:a & b
10.逻辑运算符:&&例如:a && b
11.逻辑运算符:||例如:a || b
12.条件运算符:? :例如:a ? b : c
13.赋值运算符:=
需要注意的是,运算符的优先级并不是唯一决定运算符执行顺序的因素,括号的加入也会改变运算符的执行顺序。当括
号中的运算符的优先级高于其他运算符时,括号中的运算符先进行运算。
3. 示例用法
3.1 后缀运算符
c语言算术运算符 关系运算符 逻辑运算符优先级
C语言算术运算符、关系运算符和逻辑运算符优先级详解
一、算术运算符
1.1 加法运算符(+)
加法运算符用于对两个数进行相加操作,例如:a + b。在C语言中,加法运算符的优先级较低。
1.2 减法运算符(-)
减法运算符用于对两个数进行相减操作,例如:a - b。和加法运算符一样,减法运算符的优先级也较低。
1.3 乘法运算符(*)
乘法运算符用于对两个数进行相乘操作,例如:a * b。在C语言中,乘法运算符的优先级比加法和减法运算符高。
1.4 除法运算符(/)
除法运算符用于对两个数进行相除操作,例如:a / b。和乘法运算符一样,除法运算符的优先级比加法和减法运算符高。
1.5 取模运算符()
取模运算符用于求两个数相除后的余数,例如:a b。在C语言中,取模运算符的优先级和乘法、除法运算符相同。
二、关系运算符
2.1 等于运算符(==)
等于运算符用于判断两个数是否相等,例如:a == b。在C语言中,等于运算符的优先级较低。
2.2 不等于运算符(!=)
不等于运算符用于判断两个数是否不相等,例如:a != b。和等于运算符一样,不等于运算符的优先级较低。
2.3 大于运算符(>)
大于运算符用于判断一个数是否大于另一个数,例如:a > b。在C语言中,大于运算符的优先级较低。
2.4 小于运算符(<)
小于运算符用于判断一个数是否小于另一个数,例如:a < b。和大于运算符一样,小于运算符的优先级较低。
2.5 大于等于运算符(>=)
大于等于运算符用于判断一个数是否大于或等于另一个数,例如:
a >= b。在C语言中,大于等于运算符的优先级较低。
c语言 运算符 优先级别
c语言运算符优先级别
C语言是一种广泛使用的编程语言,它具有丰富的运算符,这些运算符可以用于执行各种数学和逻辑运算。在C语言中,运算符的优先级别非常重要,因为它们决定了表达式中运算的顺序。在本文中,我们将讨论C语言中运算符的优先级别。
1. 一元运算符
一元运算符是只有一个操作数的运算符。在C语言中,一元运算符的优先级别最高。一元运算符包括取地址运算符(&)、取值运算符(*)、正号运算符(+)、负号运算符(-)和逻辑非运算符(!)等。例如,以下代码中的一元运算符优先级别最高:
int a = 10;
int b = -a;
在这个例子中,变量a的值为10,变量b的值为-10。这是因为负号运算符是一元运算符,它的优先级别最高,所以它先被执行。
2. 乘法和除法运算符
乘法和除法运算符的优先级别比一元运算符低,但比加法和减法运算符高。乘法和除法运算符包括乘号(*)和除号(/)。
例如,以下代码中的乘法和除法运算符优先级别比一元运算符高,
但比加法和减法运算符低:
int a = 10;
int b = 5;
int c = a * b / 2;
在这个例子中,变量a的值为10,变量b的值为5,变量c的值为25。这是因为乘法和除法运算符的优先级别比加法和减法运算符低,所以它们先被执行。
3. 加法和减法运算符
加法和减法运算符的优先级别比乘法和除法运算符低,但比赋值运算符高。加法和减法运算符包括加号(+)和减号(-)。
例如,以下代码中的加法和减法运算符优先级别比乘法和除法运算符低,但比赋值运算符高:
int a = 10;
运算符优先级c语言
运算符优先级c语言
运算符优先级是指在C语言中,不同的运算符有不同的优先级,当一个表达式中含有多个运算符时,优先级高的运算符先执行。例如,在表达式“a+b*c”中,先执行乘法运算,再执行加法运算,因为乘法运算的优先级高于加法运算。
在C语言中,运算符的优先级可以用以下表格来表示:
1. ():括号中的运算最先执行
2. ++、--:自增和自减运算在其他运算之前执行
3. !、~、-、+:逻辑非、按位取反、负数、正数运算在其他运算之前执行
4. *、/、%:乘、除、取余运算在其他运算之前执行
5. +、-:加、减运算在其他运算之前执行
6. <<、>>:左移、右移运算在其他运算之前执行
7. &:按位与运算在其他运算之前执行
8. ^:按位异或运算在其他运算之前执行
9. |:按位或运算在其他运算之前执行
10. &&:逻辑与运算在其他运算之前执行
11. ||:逻辑或运算在其他运算之前执行
12. ?::条件运算符在其他运算之前执行
13. =、+=、-=、*=、/=、%=、<<=、>>=、&=、^=、|=:赋值运算在其他运算之后执行
在实际运用中,我们需要根据不同的优先级来编写我们的代码,
以确保表达式的计算顺序正确。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
c语言运算符优先级
Turbo C的运算符非常丰富, 主要分为三大类: 算术运算符, 关系运算符与
逻辑运算符, 按位运算符。除此之外, 还有一些用于完成特殊任务的运算符。下
面分别进行介绍。
5.1 算术运算符
Turbo C的算术运算符如下:
━━━━━━━━━━━━━━━━━━━━━━━━━━━━
操作符 作用
────────────────────────────
+ 加, 一目取正
- 减, 一目取负
* 乘
/ 除
% 取模
-- 减1
++ 加1
━━━━━━━━━━━━━━━━━━━━━━━━━━━━
一、一目和二目操作
一目操作是指对一个操作数进行操作。例如: -a是对a进行一目负操作。
二目操作(或多目操作)是指两个操作数(或多个操作数)进行操作。
在Turbo C中加、减、乘、除、取模的运算与其它高级语言相同。需要注意
的是除法和取模运算。
例如:
15/2 是15除以2商的整数部分7
15%2 是15除以2的余数部分1
对于取模运算符"%", 不能用于浮点数。
另外, 由于Turbo C中字符型数会自动地转换成整型数, 因此字符型数也可
以参加二目运算。
例如:
main()
{
char m, n; /*定义字符型变量*/
m='c'; /*给m赋小写字母'c'*/
n=m+'A'-'a'; /*将c中的小写字母变成大写字母'B'后赋给n*/
...
}
上例中m='c'即m=98, 由于字母A和a的ASCII码值分别为65和97。这样可以将
小写字母变成大写字母, 反之, 如果要将大写字母变成小写字母, 则用c+ 'a'
-'A'进行计算。
二、增量运算
在Turbo C中有两个很有用的运算符, 在其它高级语言中通常没有。这两个
运算符就是增1和减1运算符"++"和"--", 运算符"++"是操作数加1, 而"--" 则是
操作数减1。
例如:
x=x+1 可写成x++, 或++x
x=x-1 可写成x--, 或--x
x++(x--)与++x(--x)在上例中没有什么区别, 但x=m++和x=++m却有很大差别。
x=m++ 表示将m的值赋给x后, m加1。
x=++m 表示m先加1后, 再将新值赋给x。
三、赋值语句中的数据类型转换
类型转换是指不同类型的变量混用时的类型改变。
在赋值语句中, 类型转换规则是:
等号右边的值转换为等号左边变量所属的类型。
例如:
main()
{
int i, j; /*定义整型变量*/
float f, g=2.58; /*定义浮点型变量*/
f=i*j; /*i与j的乘积是整型数, 被转换成为浮点数赋给f*/
i=g; /*g中的浮点型数转换成为整型数赋给i*/
...
}
由于Turbo C按上述数据类型转换规则, 因此在作除法运算时应特别注意。
例如:
main()
{
float f;
int i=15;
f=i/2;
}
上面程序经运行后, f=7并不等于准确值7.5。正确的程序应该是:
main()
{
float f;
int i=15;
f=i/2.0;
}
也可直接将i定义为浮点数。
5.2 关系运算符和逻辑运算符
一、逻辑运算符
逻辑运算符是指用形式逻辑原则来建立数值间关系的符号。
Turbo C的逻辑运算符如下:
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
操作符 作用
─────────────────────────────
&& 逻辑与
|| 逻辑或
! 逻辑非
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
二、关系运算符
关系运算符是比较两个操作数大小的符号。
Turbo C的关系运算符如下:
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
操作符 作用
─────────────────────────────
> 大于
>= 大于等于
< 小于
<= 小于等于
== 等于
!= 不等于
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
关系运算符和逻辑运算符的关键是真(true)和假(false)的概念。Turbo C中
true可以是不为0的任何值, 而false则为0。 使用关系运算符和逻辑运算符表达
式时, 若表达式为真(即true)则返回1, 否则, 表达式为假(即false), 则返回0。
例如:
100>99 返回1
10>(2+10) 返回0
!1&&0 返加0
对上例中表达式!1&&0, 先求!1和先求1&&0将会等于出不同的结果, 那么何
者优先呢? 这在Turbo C中是有规定的。 有关运算符的优先级本节后面将会讲到。
5.3 按位运算符
Turbo C和其它高级语言不同的是它完全支持按位运算符。这与汇编语言的
位操作有些相似。
Turbo C中按位运算符有:
━━━━━━━━━━━━━━━━━━━━━━━━━━━━
操作符
作用
────────────────────────────
& 位逻辑与
| 位逻辑或
^ 位逻辑异或
- 位逻辑反
>> 右移
<< 左移
━━━━━━━━━━━━━━━━━━━━━━━━━━━━
按位运算是对字节或字中的实际位进行检测、设置或移位, 它只适用于字符
型和整数型变量以及它们的变体, 对其它数据类型不适用。
关系运算和逻辑运算表达式的结果只能是1或0。 而按位运算的结果可以取0
或1以外的值。
要注意区别按位运算符和逻辑运算符的不同, 例如, 若x=7, 则x&&8 的值为
真(两个非零值相与仍为非零), 而x&8的值为0。
移位运算符">>"和"<<"是指将变量中的每一位向右或向左移动, 其通常形式
为:
右移: 变量名>>移位的位数
左移: 变量名<<移位的位数
经过移位后, 一端的位被"挤掉", 而另一端空出的位以0 填补, 所以,
Turbo C中的移位不是循环移动的。
5.4 Turbo C的特殊运算符
一、"?"运算符
"?"运算符是一个三目运算符, 其一般形式是:
<表达式1>?<表达式2>:<表达式3>;
"?"运算符的含义是: 先求表达式1的值, 如果为真, 则求表达式2 的值并把
它作为整个表达式的值; 如果表达式1 的值为假, 则求表达式3 的值并把它作为
整个表达式的值。
例如:
main()
{
int x, y;
x=50;
y=x>70?100:0;
}
本例中, y将被赋值0。如果x=80, y将被赋值100。
因此, "?"运算符可以代替某些if-then-else形式的语句。
二、"&"和"*"运算符
"&"运算符是一个返回操作数地址的单目操作符。
"*"运算符是对"&"运算符的一个补充, 它返回位于这个地址内的变量值, 也
是单目操作符。
例如:
main()
{
int i, j, *m;
i=10;
m=&i; /*将变量i的地址赋给m*/
j=*m; /*地址m所指的单元的值赋给j*/
}
上面程序运行后, i=10, m为其对应的内存地址, j的值也为10。
三、","运算符
","运算符用于将多个表达式串在一起, ","运算符的左边总不返回, 右边表
达式的值才是整个表达式的值。
例如:
main()
{
int x, y;
x=50;
y=(x=x-5, x/5);
}
上面程序执行后y值为9, 因为x的初始值为50, 减5后变为45, 45除5为9赋给
y。
四、sizeof运算符
sizeof运算符是一个单目运算符, 它返回变量或类型的字节长
度。
例如:
sizeof(double) 为8
sizeof(int) 为2
也可以求已定义的变量, 例如:
float f;
int i;
i=sizeof(f);
则i的值将为4。
五、联合操作
Turbo C中有一特殊的简写方式, 它用来简化一种赋值语句, 适用于所有的
双目运算符。其一般形式为:
<变量>=<变量><操作数><表达式>
相当于
<变量><操作数>=<表达式>
例如:
a=a+b 可写成 a+=b
a=a&b 可写成 a&=b
a=a/(b-c) 可写成 a/=b-c
5.5 Turbo C运算符的优先级
Turbo C规定了运算符的优先次序即优先级。 当一个表达式中有多个运算符
参加运算时, 将按下表所规定的优先级进行运算。表中优先级从上往下逐渐降低,
同一行优先级相同。
例如:
表达式 10>4&&!(100<99)||3<=5 的值为1
表达式 10>4&&!(100<99)&&3<=5 的值为0
Turbo C运算符的优先次序
━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━
表达式 ┃优先级
────────────────────────────╂────
()(小括号) [](数组下标) .(结构成员) ->(指针型结构成员)┃ 最高
────────────────────────────┃ ↑
!(逻辑非) .(位取反) -(负号) ++(加1) --(减1) &(变量地址)┃ │
────────────────────────────┃ │
*(指针所指内容) type(函数说明) sizeof(长度计算) ┃ │
────────────────────────────┃ │
*(乘) /(除) %(取模) ┃ │
────────────────────────────┃ │
+(加) -(减) ┃ │
────────────────────────────┃ │
<<(位左移) >>(位右移) ┃ │
────────────────────────────┃ │
<(小于) <=(小于等于) >(大于) >=(大于等于) ┃ │
────────────────────────────┃ │
==(等于) !=(不等于) ┃ │
────────────────────────────┃ │
&(位与) ┃ │
────────────────────────────┃ │
^(位异或) ┃ │
────────────────────
────────┃ │
|(位或) ┃ │
────────────────────────────┃ │
&&(逻辑与) ┃ │
────────────────────────────┃ │
||(逻辑或) ┃ │
────────────────────────────┃ │
?:(?表达式) ┃ │
────────────────────────────┃ │
= += -=(联合操作) ┃ │
────────────────────────────┃ │
,(逗号运算符) ┃ 最低
数学运算符具有最高的优先级,然后是移位运算符、关系运算符、逻辑运算符、赋值运算符,最后是条件运算符。需要记住的两个重要的东西是:
1. 所有的逻辑运算符具有比所有关系运算符都低的优先级。
2. 一位运算符比关系运算符绑定得更紧密,但又不如数学运算符。
在这些运算符类别中,有一些奇怪的地方。乘法、除法和求余具有相同的优先级,加法和减法具有相同的优先级,以及移位运算符具有相同的优先级。
还有就是六个关系运算符并不具有相同的优先级:==和!=的优先级比其他关系运算符要低。这就允许我们判断a和b是否具有与c和d相同的顺序,例如:
a < b == c < d
在逻辑运算符中,没有任何两个具有相同的优先级。按位运算符比所有顺序运算符绑定得都紧密,每种与运算符都比相应的或运算符绑定得更紧密,并且按位异或(^)运算符介于按位与和按位或之间。
三元运算符的优先级比我们提到过的所有运算符的优先级都低。这可以保证选择表达式中包含的关系运算符的逻辑组合特性,如:
z = a < b && b < c ? d : e
这个例子还说明了赋值运算符具有比条件运算符更低的优先级是有意义的。另外,所有的复合赋值运算符具有相同的优先级并且是自右至左结合的,因此
a = b = c
和
b = c; a = b;
是等价的。
具有最低优先级的是逗号运算符。这很容易理解,因为逗号通常在需要表达式而不是语句的时候用来替代分号。
赋值是另一种运算符,通常具有混合的优先级。例如,考虑下面这个用于复制文件的循环:
whi
le(c = getc(in) != EOF)
putc(c, out);
这个while循环中的表达式看起来像是c被赋以getc(in)的值,接下来判断是否等于EOF以结束循环。不幸的是,赋值的优先级比任何比较操作都低,因此c的值将会是getc(in)和EOF比较的结果,并且会被抛弃。因此,“复制”得到的文件将是一个由值为1的字节流组成的文件。
char short int unsigned
long float double struct
union void enum signed
const volatile typedef auto
register static extern break
case continue default do
else for goto if
return switch while sizeof
查看文章
C语言的标准库---C关键字2007年05月11日 星期五 11:54以下列出由C语言提供的标准函数库,函数库通过#include进行引用。
在C89标准中:
在95年的修正版中
在C99中增加了六个函数库
C语言的保留关键字
char short int unsigned
long float double struct
union void enum signed
const volatile typedef auto
register static extern break
case continue default do
else for goto if
return switch while sizeof