关系操作符与逻辑操作符与条件操作符

1.关系操作符

C语言用于比较的表达式,成为“关系表达式”(relational expression),里面使用的运算符就成为“关系运算符”(relational operator),主要有以下6个:

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

例子:

a > b;
a < b;
a >= b;
a <= b;
a == b;
a != b;

C语言中,关系表达式通常返回 0 或 1,返回 0 表示假,所有非 0 值表示真。如:23 > 2 返回 1 ,12 > 20 返回 0。

关系表达式通常用于 if 或 while 结构,如:

if (a == 5)
{
	printf("hehe\n");
}
while (n > 0)
{
	printf("hehe\n");
}

这里要注意:相等运算符 == 与赋值运算符 = 是两个不一样的运算符,不可以混淆!

有时我们可能会写出下面这样的代码,下面示例中,原本是 x == 3,但是不小心写成 x = 3, 这个式子就会表示变量 x 赋值为 3,它的返回值是 3,所以 if  判断总是为真。

if (x = 3)……

除此之外,还有另一个易错的点是:多个关系运算符不宜连用

i < j < k

上面示例中,连续使用两个小于运算符,这是合法表达式,不会报错,但通常达不到想要的结果。因为关系运算符是从左到右算的,所以实际执行的是下面的表达式:

(i < j) < k

i < j 返回 0 或 1,所以最终是 0 或 1 与变量 k 进行比较。如果想要判断 j 的值是否在 i 和 k 之间,因该使用下面这种写法:

i < j && j < k

举个例子:

输入一个年龄,如果年龄在45岁~59岁之间,我们输出中年

#include <stdio.h>

int main()
{
	int age = 0;
	scanf("%d", &age);
	
	if (age >= 45 && age <= 59)
		printf("中年\n");
	return 0;
}

2.逻辑操作符

逻辑运算符提供逻辑判断功能,用于构建更复杂的表达式,主要有下面三个运算符:

  • 逻辑取反运算符(!):改变单个表达式的真假。
  • 逻辑与运算符(&&) :就是并且的意思,两侧的表达式都为真,则为真,否则为假。
  • 逻辑或运算符(||):就是或者的意思,两侧至少有一个表达式为真,则为真,否则为假。
2.1 逻辑取反运算符 

举个例子:假如我们有一个变量叫 flag,如果 flag 为假,我们就做一件事情。

#include <stdio.h>

int main()
{
	int flag = 0;
	if (!flag)
	{
		printf("hehe\n");
	}
	return 0;
}

如果 flag 为真,!flag 就为假,如果 flag 为假,!flag 就为真。所以上述代码的意思就是 flag 为假,执行 if 语句中的代码。

2.2 逻辑与运算符

&& 就是或运算符,也就是或者的意思,&& 也是一个双目操作符,使用的方法是 a && b,&& 两边的表达式都是真的时候,整个表达式才为真,只要有一个表达式为假,则整个表达式为假。

例如:我们想要表达6月到8月是夏天,该怎么用代码体现呢 ?_?

#include <stdio.h>

int main()
{
	int month = 0;
	scanf("%d", &month);
	if (month >= 6 && month <= 8)
	{
		printf("夏季\n");
	}
	return 0;
}

想要表达6月到8月是夏天的话,month既要大于等于6,又要小于等于8,两个条件必须同时满足。

2.3 逻辑或运算符

|| 就是或运算符,也就是或者的意思,|| 也是一个双目操作符,使用的方法是 a || b,|| 两边的表达式只要有一个为真,整个表达式就为真,两边的表达式都为假的时候,才为假。

打个比方:一年中的3月或4月或5月是春天,我们该如何使用代码来体现呢~_~

#include <stdio.h>

int main()
{
	int month = 0;
	scanf("%d", &month);
	
	if(month==3 || month==4 || month==5)
	{
		printf("春季\n");
	}
	return 0;
}

3.条件操作符

条件操作符又叫三目操作符,需要接受三个操作数,形式如下:

exp1 ? exp2 : exp3

条件操作符的计算逻辑是:如果 exp1 为真,exp2 计算,计算的结果是整个表达式的结果;如果 exp1 为假,exp3 计算,计算的结果是整个表达式的结果。

逻辑对比:

使用 if 语句表达:

#include <stdio.h>

int main()
{
	int a = 0;
	int b = 0;
	scanf("%d", &a);

	if (a > 5)
		b = 3;
	else
		b = -3;

	return 0;
}

使用条件操作符表达:

int main()
{
	int a = 0;
	int b = 0;
	scanf("%d", &a);

	b = (a > 5 ? 3 : -3);
 
	return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值