2015年计算机二级C语言基础:C语言运算符
发布时间:2012/5/21 11:24:40 来源:城市网学院 编辑:ziteng
-
C说话的内部运算符很丰硕,运算符是告诉编译轨范执行特定算术或逻辑操作的符号。C说话有三大运算符:算术、关系与逻辑、位操作。此外,C还有一些非凡的运算符,用于完成一些非凡的使命。
2.6.1算术运算符
表2-5列出了C说话中许可的算术运算符。在C说话中,运算符“ ”、“-”、“*”和“/”的用法与大大都计较机说话的不异,几乎可用于所有C说话内界说的数据类型。当“/”被用于整数或字符时,结不美观取整。例如,在整数除法中,10/3=3。
一元减法的现实效不美观等于用-1乘单个操作数,即任何数值前放置减号将改变其符号。模运算符“%”在C说话中也同它在其它说话中的用法不异。切记,模运算取整数除法的余数,所以“%”不能用于float和double类型。
最后一行打印一个0和一个1,因为1/2整除时为0,余数为1,故1%2取余数1。
2.6.2自增和自减
C说话中有两个很有用的运算符,凡是在其它计较机说话中是找不到它们的—自增和自减运算符, 和--。运算符“ ”是操作数加1,而“--”是操作数减1,换句话说:x=x 1;同 x;x=x-1;同--x;
自增和自减运算符可用在操作数之前,也可放在厥后,例如:x=x 1;可写成 x;或x ;但在表达式中这两种用法是有区此外。自增或自减运算符在操作数之前,C说话在引用操作数之前就先执行加1或减1操作;运算符在操作数之后,C说话就先引用操作数的值,尔后再进行加1或减1操作。请看下例:
x=10;
;y= x;
此时,y=11。如不雅察看序改为:
x=10;y=x ;
则y=10。在这两种情形下,x都被置为11,但区别在于设置的时刻,这种对自增和自减发生时刻的节制长短常有用的。在大大都C编译轨范中,为自增和自减操作生成的轨范代码比等价的赋值语句生成的代码
要快得多,所以尽可能采用加1或减1运算符是一种好的选择。
。下面是算术运算符的优先级:
:最高 、-
--
-(一元减)
*、/、%最低 、-编译轨范对同级运算符按从左到右的挨次进行计较。当然,括号可改变计较挨次。C说话
措置括号的体例与几乎所有的计较机说话不异:强迫某个运算或某组运算的优先级升高。
2.6.3关系和逻辑运算符
关鲜ё偎算符中的“关系”二字指的是一个值与另一个值之间的关系,逻辑运算符中的“逻辑”二字指的昵喱接关系的体例。因为关系和逻辑运算符常在一路使用,所以将它们放在一路谈判。关系和逻辑运算符概念中的关头是True(真)和Flase(假)。C说话中,非0为True,0为Flase。使用关系或逻辑运算符的表达式对Flase和Ture分袂返回值0或1(见表2-6)。
表2-6给出于关系和逻辑运算符,下面用1和0给出逻辑真值表。关系和逻辑运算符的优先级比算术运算符低,即像表达式10>1 12的计较可以假定是对表达式10>(1 12)的计较,当然,该表达式的结不美观为Flase。在一个表达式中许可运算的组合。例如:
10>5&&!(10<9)||3<=4
这一表达式的结不美观为True。
。下表给出了关系和逻辑运算符的相对优先级:
:最高!
!
>= <=
=== !=
=&& [NextPage] 最低||同算术表达式一样,在关系或逻辑表达式中也使用括号来改削原计较挨次。切记,所有关系和逻辑表达式发生的结不美观不是0就是1,所以下面的轨范段不仅正确而且
将在屏幕上打印数值1。
int x;
;x=100;
;printf("%d",x>10);
2.6.4位操作符
与其它说话分歧,C说话撑持全数的位操作符(Bitwiseoperators)。因为C说话的设计目的是庖代汇编说话,所以它必需撑持汇编说话所具有的运算能力。位操作是对字节或字中的位(bit)进行测试、置位或移位措置,这里字节或字是针对C尺度中的char和int数据类型而言的。位操作不能用于float、double、longdouble、void或其它复杂类型。表2-7给出了位操作的操作符。位操作中的AND、OR和NOT(1的补码)的真值表与逻辑运算等价,独一分歧的是位操作是逐位进走运算的。
如表2-8所示,当且仅当一个操作数为True时,异或的输出为True,否则为Flase。
位操作凡是用于设备驱动轨范,例如调制解调器轨范、磁盘文件打点轨范和打印机驱动轨范。这是因为位操作可屏障失踪某些位,如奇偶校验位(奇偶校验位用于确保字节中的其它位不会发生错误凡是奇偶校验位是字节的最高位)。
凡是我们可把位操作AND作为封锁位的手段,这就是说两个操作数中任一为0的位,其结不美观中对应位置为0。例如,下面的函数经由过程挪用函数read_modem(),从调制解调器端口读入一个字符,并将奇偶校验位置成0。
字节的位8是奇偶位,将该字节与一个位1到位7为1、位8为0的字节进行与操作,可将该字节的奇偶校验位置成0。表达式ch&127恰是将ch中每一位同127数字的对应位进行与操作,结不美观ch的位8被置成了0。不才面的例子中,假定ch领受到字符"A"而且奇偶位已经被置位。
一般来说,位的AND、OR和XOR操作经由过程对操作数运算,直接对结不美观变量的每一位分袂措置。恰是因为这一原因(还有其它一些原因),位操作凡是不像关系和逻辑运算符那样用在前提语句中,我们可以用例子声名这一点:假定X=7,那么x&&8为Ture(1),而x&8却为Flase(0)。