C语言程序集与词法规则

运算符和表达式(一)

一、关系运算符和关系表达式

1. 关系运算符

比较两个数据给定关系的运算符称为关系运算符。C语言中提供了6个关系运算符:>(大于)、<(小于)、>=(大于等于)、<=(小于等于)、==(等于)、!=(不等于)。

   关系运算符是双目运算符,其中前4个的优先级高于后面2个的优先级,但都比算术运算符的优先级低,其结合方式为自左向右。

2. 关系表达式

  由关系运算符和操作数组成的表达式称为关系表达式,如果关系成立,则结果为真,在C语言中用1表示;关系不成立,则结果为假,在C语言中用0表示。例如:

 int x=2,y=4,z=6

 x+y>0(比较表达式x+y是否大于0,值为真)

 x+y<0(比较表达式x+y是否小于0,值为假)

x<’a’(比较x是否小于字母a的ASCII码值97,值为真)

需要特别注意,在C语言中,比较两个表达式是否满足等于关系的运算符是双等于号(==),而单等于号(=)在C语言中是赋值运算符,含义为将右边表达式的值赋给左边的变量。读者在使用时一定要把两者严格区分开来。

免费领取c++学习资料加薇芯:chulan980

二、逻辑运算符和逻辑表达式

1. 逻辑运算符

C语言中共有3个逻辑运算符:!(逻辑非)、&&(逻辑与)、‖(逻辑或)。

其优先级顺序是!的优先级高于算术运算符,而&&和‖的优先级介于赋值运算符和关系运算符之间。其结合方向为自左向右。

  在C语言中没有逻辑类型,如果表达式值为非0,则为真,用1表示;如果表达式值为0,则为假,用0表示。

  !(逻辑非)为单目运算符,如果操作数为真(非0),则结果为假(0);如果操作数为假(0),则结果为真(1)。

  &&(逻辑与)为双目运算符,如果两个操作数都为真(非0),则结果真(1);否则结果为假(0)。如果第一个操作数为假,则直接判定结果为假,而不再判断第二个操作数。

  ‖(逻辑或)为双目运算符,如果其中一个操作数为真(非0),则结果为真(1);若两个操作数均为假(0),则结果为假(0)。如果第一个操作数为真,则直接判定结果为真,不再判断第二个操作数。

2. 逻辑表达式

   由逻辑运算符构成的表达式称为逻辑表达式。例如:

  int x=0,y=3,z=-8;

  !x            (结果为真,即为1)

  x&&(y>0)      (和x&&y>0等价,结果为假,即为0)

  X>y‖z        (和(X>y)‖z等价,结果为真,即为1)

 在C语言中,如果要表示x介于0~10之间,正确的逻辑表达式为:x>=0&&x<=10,注意:0<=x<=10,而此逻辑表达式的计算方式为:先计算0<=x,然后用其结果(1或0)比较是否小于等于10。

  逻辑表达式中如果有赋值运算符时需要特别注意逻辑运算符的判定规则。例如:

int x=10;

x‖x=20(表达式值为真,x的值为10)

  根据逻辑或的判定规则,x的值为10,非0,所以直接判定结果为真,不再执行第二个操作数表达式,因此x中的值仍然是10。同样,

int x=10;

X<0&&=20  (表达式值为假,x的值为10)

根据逻辑与的判定规则,第一个操作数表达式x>0为假,所以直接判定结果为假,不再执行第二个操作数表达式。

作者:东方山

*声明:内容与图片均来源于网络(部分内容有修改),版权归原作者所有,如来源信息有误或侵犯权益,请联系我们删除或授权事宜。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值