共享知识分享快乐
盛年不重来,一日难再晨。及时宜自勉,岁月不待人。
语言运算符大全
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 运算符是一种好的选择。
AAAAAAAA
共享知识分享快乐
。下面是算术运算符的优先级:
:最高 ++、-
--
(一元减)
* 、 / 、 %最低 +、- 编译程序对同级运算符按从左到右的顺序进行计算。当然,括号可改变计算顺序。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 。
。下表给出了关系和逻辑运算符的相对优先级:
:最高!
!
>= <=
!=
=&&
最低 || 同算术表达式一样,在关系或逻辑表达式中也使用括号来修改原计算顺序。切记,所有关系和逻辑
表达式产生的结果不是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 的补
码)的真值表与逻辑运算等价,唯一不同的是位操作是逐位进行运算的。
AAAAAAAA
共享知识分享快乐
如表 2-8 所示,当且仅当一个操作数为True 时,异或的输出为True ,否则为 Flase 。
位操作通常用于设备