C语言:关系操作符、条件操作符、逻辑操作符

关系操作符

C语言 用于比较的表达式称为“关系表达式”,使用的运算符就称为“关系运算符”

常用的关系运算符:

  1. >:大于运算符
  2. <:小于运算符
  3. >=:大于等于运算符
  4. <=:小于等于运算符
  5. ==:相等运算符
  6. !=:不相等运算符

关系表达式通常返回0或1,用于表示真假。

举例:

  1. 20>12,返回1;
  2. 12>20,返回0;

关系表达式通常用于if或while结构。

举例:

if(x == 6)//判断x是否于6相等
{
    printf("x is 6");
}

注意:x==3不等价于x=3,前者用于判断是否等价,后者用于赋值

使用关系运算符时,不宜将多个运算符连用,如(a<b<c)。虽合法,但并不能保证b的值介于(a,b)之间。原因是关系运算符是从左至右运算的,所以(a<b<c)等价于((a<b)<c)。由于(a<b)返回的结果为0或1,所以c是与0或1进行比较。

综上所述:如果要正确表达(a<b<c),正确的写法是(a<b && b<c)。

条件操作符

条件操作符也称为三目操作符,需要接收三个操作数,具体格式为:

exp1 ? exp2 : exp3
//如果exp1为真,则执行exp2,否则执行exp3

举例:使用条件表达式找出两个数中较大值

#include<stdio.h>
//使用条件表达式找出两个数中的较大者

int main()
{
	int a;
	int b;
	int max;

	while (scanf("%d %d",&a,&b)!=EOF)
	{
		max = a > b ? a : b;
		//判断a与b的大小,并将较大的数赋值给max
		printf("max=%d\n", max);
	}

	return 0;
}

逻辑操作符

逻辑运算符提供逻辑判断功能,用于构建更复杂的表达式。

主要有一下三个操作符:

  1. !:逻辑取反运算符(改变单个表达式的真假);
    A!A
    01
    非00

  2. &&:与运算符,表示“并且”,只有当两侧表达式同为真时,才为真(一假全假);
    ABA && B
    000
    0非00
    非000
    非0非01

  3. ||:或运算符,表示“或者”,当两侧表达式其中之一为真是,则为真(一真全真);
    ABA || B
    000
    0非01
    非001
    非0非01

举例:判断是否为闰年

#include<stdio.h>
//判断是否为闰年

int main()
{
	int year;

	while (scanf("%d", &year))
	{
		if ((year%4==0 && year%100!=0) ||(year%400 == 0))
        //判断闰年的条件是:年份能够被4整除但不能被100整除,或年份能被400整除
		{
			printf("%d年是闰年\n", year);
		}
		else
		{
			printf("%d年不是闰年\n", year);
		}
	}

	return 0;
}

 短路

C语言的逻辑运算符有个特点,它总是先对左侧的表达式求值,再对右边的表达式求值。

如果左边的表达式满足逻辑运算符的条件,则不再对右边的表达式求值,这种情况称为“短路”。

 举例:

if(a>=6 && a<=8)

 解释:

如果左操作数(a>=6)的结果为0,则无需再判断(a<=8)。所以,对于&&操作符来说,左边操作符结果为0时,右边则不再执行。

举例:

#include<stdio.h>
//短路练习

int main()
{
	int i;
	int a = 0;
	int b = 1;
	int c = 2;
	int d = 3;

	i = a++ && b++ && c++ && d++;

	printf("%d,%d,%d,%d,%d",i, a, b, c, d);

	return 0;
}

运行结果如下:

解释:

a的初值为0,在进行&&判断时,由于a为0,则后面无需进行计算,b、c、d的值为初始值不变,此时i的值为0。

将a的值赋值给i后,再执行a++,此时a的值为1。

  • 22
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值