C语言(8)------------->关系操作符

1.文章内容简介

在C语言中,有很多的操作符,每种操作符都有着相应的作用。其中有一种用于关系表达式中比较大小的操作符——关系操作符。这一篇文章将对关系操作符进行介绍。

2.整体介绍

为了更加直观,我们使用一个表格进行展示:

大于>
小于<
大于等于>=
小于等于<=
等于==
不等于!=

2.1大于>和小于<

在C语言中,表示大于和小于和我们学习的数学知识是一致的。若表示a大于b,写成a>b即可;若表示a小于b,写成a<b即可。在数学中,式子成立我们说它是对的,不成立就是错的。那在C语言中,这个成立与不成立返回什么样的值呢?

下面让我们来看一个例子:

a的值是0,b的值是2,a<b是不成立的,那么在C语言中这个表达式应该返回什么值呢?

参考代码:

#include <stdio.h>

int main()
{
	int a = 0;
	int b = 2;
	int re = a > b;
	printf("re=%d\n",re);
	return 0;
}

在VS2019的集成开发环境下的运行结果:

我们可以看到返回的值是0,所以若关系表达式不成立,那么关系表达式返回的值是0

那如果,改成a<b呢,这时候是正确的应该返回什么样的值呢?

参考代码:

#include <stdio.h>

int main()
{
	int a = 0;
	int b = 2;
	int re = a < b;
	printf("re=%d\n", re);
	return 0;
}

在VS2019的运行结果:

2.2小于等于<=和大于等于>=

上大学之前,我们学习大于等于和小于等于的符号。在数学中,大于等于的写法是≥;小于等于的写法是≤。那在C语言里面,它们的写法是怎样的呢?

看前面的标题后,应该知道了大于等于是>=,小于等于是<=。

那在这里我们在看两个代码,验证一下若关系表达式不成立,那么关系表达式返回的值是0在这里面是否成立。

2.2.1小于等于的使用举例:

参考代码:

#include <stdio.h>

int main()
{
	int a = 0;
	int b = 2;
	int re = (a <= b);//此处加上括号为了方便阅读代码和理解代码
	printf("re=%d\n",re);
	return 0;
}

在VS2019的运行结果:

解释:因为a=0,b=2,a确实是小于等于b的,所以re的值会得到1。 

2.2.2大于等于的使用举例:

参考代码:

#include <stdio.h>

int main()
{
	int a = 0;
	int b = 2;
	int re = (a >= b);//此处加上括号为了方便阅读代码和理解代码
	printf("re=%d\n", re);
	return 0;
}

在VS2019的运行结果:

解释: 因为a=0,b=2,a是小于b的,所以re的值会得到0。

但是,如果多个关系操作符连在一起使用时代码容易出现bug,比如:

如果一个人输入的年龄是在18岁在36岁之间,那么我们就返回一句英文You are teenager。那下面这个参考代码是对的吗?能得到我们的预期结果吗?

参考代码:

#include <stdio.h>

int main()
{
	int age = 0;
	scanf("%d",&age);
	if (18 <= age <= 36)
	{
		printf("You are teenager\n");
	}
	return 0;
}

在VS2019的运行结果:

现象:我们定义的青年的年龄范围是18岁到36岁,10岁应该不在这个年龄范围内,那为什么还会出现You are teenager这一句英文呢?难道我们这个代码写错了吗?

是的,这里出现一个很明显的错误:

C语言处理代码的习惯是从左往右进行解读。我们输入10之后,18小于等于10这一句话就是错的,那么根据前面所说的那这里返回的就是0,接着往后面看,0<=36,对于这个明显是成立的,那这个关系表达式的返回结果就是1,所以最终if括号中的内容为真,那么if所控制的语句就会执行。

那如何解决这个问题呢?这里就要用到我们的逻辑操作符&&,这里可能超纲了,没关系现在你就把它当作汉语里面的并且就可以了,后面的内容我们会对这个操作符解释的。

参考代码:

#include <stdio.h>

int main()
{
	int age = 0;
	scanf("%d", &age);
	if (age >= 18 && age <= 36)
	{
		printf("You are teenager\n");
	}
	return 0;
}

在VS2019的运行结果:

2.3等于==和不等于!=

2.3.1==的使用

在数学中,等于的表示符号是=,但是=在C语言中它是赋值的意思并不是等于的意思!那C语言中等于应该使用什么来表示呢?那就要用到两个=,也就是==。

那我们来看一个例子:

两个整型变量a与b,a的值是12,b的值是24。

参考代码:

#include <stdio.h>

int main()
{
	int a = 12;
	int b = 24;
	int re = (a==b);
	printf("re=%d\n",re);
	return 0;
}

在VS2019的运行结果:

 从返回结果上看,由于a与b是不相等的,所以a==b这个关系表达式的返回值是0。 

初学者在学习==之前会将=误认为等于,写出下面的代码

参考代码:

#include <stdio.h>

int main()
{
	int a = 10;
	if (12 = a)
	{
		printf("yes\n");
	}
	return 0;
}

在VS2019的运行结果:

a的值是10,不是12,为什么结果还是打印出了yes呢?原因是12赋值给了a,a此时的值是12,所以if的括号里面的内容是12是一个非零值,即为真,所以返回的结果是yes。

其实,即便是老手,有时候写代码写快了也会出现这种问题,这也和编程习惯有一定的关系。那如何去规避这种问题呢?让我们看看下面这种情况:

参考代码:

#include <stdio.h>

int main()
{
	int a = 10;
	if (12 = a )
	{
		printf("yes\n");
	}
	return 0;
}

在VS2019的运行结果:

我们把数字放在左边的时候,我们马上就能看到上面有了错误的提示。此时我们就能很快的解决这个可能会在后面的程序中出现的bug。 

当然上面给的那一段代码只是一个示范,实际上我们就是把数字放在==的左边,变量放在==的右边即可

参考代码:

#include <stdio.h>

int main()
{
	int a = 10;
	if (12 == a)
	{
		printf("yes\n");
	}
	return 0;
}

在VS2019的运行结果:

这时候我们就能得到我们的想要结果了。 

2.3.2!=的使用

在数学里,不等于的表示是用≠表示。在C语言中,不等于的表示符号是在一个=前面加上!也就是!。如果要表示两个变量a与b不相等怎么做呢?写成a!=b即可。

那如何使用它呢?

参考代码:

#include <stdio.h>

int main()
{
	int a = 0;
	int b = 1;
	int re = (a!=b);
	printf("re=%d\n",re);
	return 0;
}

在VS2019的运行结果:

参考代码:

#include <stdio.h>

int main()
{
	int a = 1;
	int b = 1;
	int re = (a!=b);
	printf("re=%d\n",re);
	return 0;
}

在VS2019的运行结果:

这个结果和前面我们说的:若关系表达式不成立,那么关系表达式返回的值是0;关系表达式成立,那么关系表达式返回的值是1。是一致的。 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值