第2章 运算符与表达式
/ g Y2 r& z4 s+ E) d6 _7 P: A5 j% x2 e: H+ ]$ T2 J! Y
[考点一] C运算符简介 ( m( N# x7 ^( @% Y
[考点二] 运算符的结合性和优先级 0 a9 w& H! S+ s! x
(1) 在C语言的运算符中,所有的单目运算符、条件运算符、赋值运算符及其扩展运算符结合方向都是从右向左,其余运算符的结合方向是从左向右。 4 m9 @: @# F( w X D
(2) 各类运算符优先级别的比较 ; }+ q- @" G, @6 b p' t% `, [
初等运算符>单目运算符>算术运算符>关系运算符>逻辑运算符>条件运算符>赋值运算符>逗号运算符 + H, c9 t" f$ M5 M# j" _/ }: V
说明:以上优先级别由左到右递减,初等运算符优先级最高,逗号运算符优先级最低。
4 U; {! I8 [( |* m' C9 i* Z- x [考点三] 强制类型转换运算符 8 ^+ r% p; F+ D* p
可以利用强制类型转换符将一个表达式转换成所需类型,其一般形式为: % a$ S# z$ j0 y
[考点四] 逗号运算符和逗号表达式 6 _% k( Q ]! w$ s0 K" ~
用逗号运算符将几个表达式连接起来称为逗号表达式。
" B% m% Y4 E4 e/ R 逗号表达式的求解过程是:先求解表达式1,然后依次求解表达式2,直到表达式n的值。整个逗号表达式的值就是表达式n的值。需要注意的是,逗号运算符是所有运算符中级别最低的。
4 ]2 G* J' n2 j% {* i9 V [考点五] 基本的算术运算符
( t- K8 _. ]0 N g3 A4 @2 B0 r7 A* V( p 需要说明的是:两个整数相除的结果为整型,如果两个数中有一个数为实数,则结果为double型。 1 G5 `, \4 P) C6 u
[考点六] 算术表达式和运算符的优先级与结合性
8 a/ |+ f1 A) j' x5 j7 D. u3 }+ h 算术表达式是用算术运算符和括号将运算量连执着起来的,符合C语言语法规则的表达式。运算对象包括函数、常量和变量等。 3 `8 F! Z* q; {) @
在计算机语言中,算术表达式的求值规律与数学中的四则运算的规律类似,其运算规则和要求如下: ! H$ R! f# B+ h5 M/ `7 x3 ^
(1) 在算术表达式中,可使用多层圆括号,但括号必须配对。运算时从内层圆括号开始,由内向外依次计算各表达式的值。
) Y9 o$ }1 S8 _/ q/ z2 i6 c/ X- L0 A (2) 在算术表达式中,对于不同优先级的运算符,可按运算符的优先级由高到低进行运算,若表达式中运算符的优先级相同,则按运算符的结合方向进行运算。
$ Z# C3 ?2 k: N" W; [- W5 f& ~ (3) 如果一个运算符两侧的操作数类型不同,则先利用自动转换或强制类型转换,使两者具有相同类型,然后进行运算。
0 d2 G o5 D+ \" B9 R [考点七] 自增自减运算符
- ~* B' L9 y, D! @ 作用:使变量的值增1或减1。
% B/ D) N) C/ _+ R [考点八] 赋值运算符和赋值表达式 , ^& k) v7 _ A8 H, ]8 l4 ^4 X
赋值符号“=”就是赋值运算符,作用是将一个数据赋给一个变量或将一个变量的值赋给另一个变量,由赋值运算符组成的表达式称为赋值表达式。
$ T3 X w% \1 T H4 K9 [& S6 c% T 在程序中可以多次给一个变量赋值,每赋一次值,与它相应的存储单元中的数据就被更新一次,内存中当前的数据就是最后一次所赋值的那个数据。 7 Z- a6 @; O; V8 F9 D
[考点九] 复合的赋值运算符 8 x5 c. {% ~ x) x0 u
在赋值运算符之前加上其他运算符就可以构成复合赋值运算符。 ' V' N$ I$ Z' y* Y
[考点十] 赋值运算中的类型转换 , u2 k" e/ I% c( I; j
如果赋值运算符两侧的数据类型不一致,在赋值前系统将自动先把右侧表达式求得的数值按赋值号左边变量的类型进行转换,但这种转换仅限于某些数据之间,通常称为“赋值兼容”。 * t9 f' V3 S# W. ]4 ^- a6 n; N
常用的转换规则:
* b G$ R" \% [9 T; i$ A- H (1)当实型数据赋值给整型变量时,将实型数据的小数部分截断。
4 j) } f/ y( ?5 Q (2)当整型数据赋给实型变量时,数值不变,但以浮点数形式存储到实型变量中
+ g6 r6 r5 O4 f! O& j (3)当double尖型数据赋值给float型变量时,取其前面7位的有效数字,存放到float型变量的存储单元中,这时数值可能溢出。 / u. d9 M1 o# F4 \! o$ T
(4)当字符型数据赋值给整型变量时,由于整型变量占两个字节,则字符只占一个字节,只需将字符数据放到整型变量低8位中,对该整型变量最高位进行符号扩展,其他位补零。 " u! f! `+ D4 K6 q8 C8 Y
(5)当整型、短整型、长整型数据赋值给一个char类型变量时,将低8位原封不动地送到char类型变量中。 9 o9 }1 A7 ~ y4 G) m; r( Z
[考点十一] 位运算符和位运算 . M4 }2 b; X/ @6 E6 j
在计算机中,数据都是以二进制数形式存放的,位运算就是指对存储单元中二进制位的运算。 ' @1 \7 p1 `9 N* z- L) B# c
C语言提供了6种位运算符 1 K! |4 w$ ^( E; ^4 U
说明:
7 J s: O+ b+ s) `$ e6 e (1)位运算中除“-”以外,均为双目运算符,要求两侧各有一个运算量 (2)运算量只能是整型或字符型数据,不能为实型数据 |