C说话的内部运算符很丰硕,运算符是告诉编译轨范执行特定算术或逻辑操作的符号。C说话有三大运算符:算术、关系与逻辑、位操作。此外,C还有一些非凡的运算符,用于完成一些非凡的使命。 2.6.1算术运算符- G% ]1 n6 G/ l4 ~* @0 h5 P
表2-5列出了C说话中许可的算术运算符。在C说话中,运算符“ ”、“-”、“*”和“/”的用法与大大都计较机说话的不异,几乎可用于所有C说话内界说的数据类型。当“/”被用于整数或字符时,结不美观取整。例如,在整数除法中,10/3=3。
: T9 V( ~4 @8 d* V* F( ` 一元减法的现实效不美观等于用-1乘单个操作数,即任何数值前放置减号将改变其符号。模运算符“%”在C说话中也同它在其它说话中的用法不异。切记,模运算取整数除法的余数,所以“%”不能用于float和double类型。 5 v. W7 ^/ ?/ g4 @5 l' k
& \5 H! D% K/ q5 g u& E
最后一行打印一个0和一个1,因为1/2整除时为0,余数为1,故1%2取余数1。. V/ {1 S% }/ o5 k! K5 p/ A
2.6.2自增和自减. ^+ y* y; E- h, R# F1 m' {
C说话中有两个很有用的运算符,凡是在其它计较机说话中是找不到它们的—自增和自减运算符, 和--。运算符“ ”是操作数加1,而“--”是操作数减1,换句话说:x=x 1;同 x;x=x-1;同--x;
: o0 z, `: b& n" d4 G1 c1 o R 自增和自减运算符可用在操作数之前,也可放在厥后,例如:x=x 1;可写成 x;或x ;但在表达式中这两种用法是有区此外。自增或自减运算符在操作数之前,C说话在引用操作数之前就先执行加1或减1操作;运算符在操作数之后,C说话就先引用操作数的值,尔后再进行加1或减1操作。请看下例:
/ E2 N; I2 p' `" f. j x=10;* ^% [6 [7 ?% N, V
;y= x;
4 U6 b: e; a2 E 此时,y=11。如不雅察看序改为:8 J8 q% K4 ^3 x! b7 Q$ Q
x=10;y=x ;7 q" k! h% g9 r
则y=10。在这两种情形下,x都被置为11,但区别在于设置的时刻,这种对自增和自减发生时刻的节制长短常有用的。在大大都C编译轨范中,为自增和自减操作生成的轨范代码比等价的赋值语句生成的代码
, H; l. S; J) m* f5 K 要快得多,所以尽可能采用加1或减1运算符是一种好的选择。, q [' W! R) H
。下面是算术运算符的优先级:
5 [- k8 y3 N, ]6 P& `. f' k+ v! _/ ~ :最高 、-& e' v2 R) f% e5 @4 }
--
7 b$ ^ A! S* t$ w, Z3 ] K4 b8 B -(一元减)8 D6 Z& g! z h
*、/、%最低 、-编译轨范对同级运算符按从左到右的挨次进行计较。当然,括号可改变计较挨次。C说话* i, C) o' D. S e* [
措置括号的体例与几乎所有的计较机说话不异:强迫某个运算或某组运算的优先级升高。
4 e/ E9 h1 k% g7 u" q( O; L1 x0 m# ]6 C 2.6.3关系和逻辑运算符: d% R8 J& C4 f5 o
关鲜ё偎算符中的“关系”二字指的是一个值与另一个值之间的关系,逻辑运算符中的“逻辑”二字指的昵喱接关系的体例。因为关系和逻辑运算符常在一路使用,所以将它们放在一路谈判。关系和逻辑运算符概念中的关头是True(真)和Flase(假)。C说话中,非0为True,0为Flase。使用关系或逻辑运算符的表达式对Flase和Ture分袂返回值0或1(见表2-6)。 * s& l: s+ M- O( R* a" B" d. b
: Q5 c( c! T- i# j$ J b9 d* F# ?
* P+ G: O) ?8 l/ `0 c( Q; J! U 表2-6给出于关系和逻辑运算符,下面用1和0给出逻辑真值表。关系和逻辑运算符的优先级比算术运算符低,即像表达式10>1 12的计较可以假定是对表达式10>(1 12)的计较,当然,该表达式的结不美观为Flase。在一个表达式中许可运算的组合。例如:
; a, p! F6 e7 H$ n0 ^6 |, g D 10>5&&!(10 |