C语言基础之——操作符(下)

前言:我们在上篇文章中已经对5种操作符进行了讲解,那么本篇文章将继续讲解剩余的5种操作符。

一.关系操作符

  • >
  • >=
  • <
  • <=
  • != 用于测试"不相等"
  • == 用于测试"相等"

关系操作符都是我们平时经常用到的操作符,非常的简单,但是这里有一个小小的陷阱:

那就是**"="和"=="** 的区别。一定要记住,在C语言中**"="是赋值** ,"=="才是比较是否相等

二.逻辑操作符

  • && 逻辑与(并且)
  • || 逻辑或(或者)

逻辑操作符实际上和上一篇文章里的位操作符有些相似,但是逻辑操作符并不是对两个变量进行操作,而是对两个表达式进行判断

还是熟悉的例子,我是一名企业高管,我现在手里有一个项目,我需要程序员A并且程序员B两个人来完成它。

假如这个项目是否能完成用comp 来表示,A和B程序员在则为1,不在则为0

comp = A && B;

只有当A和B都为1时 ,comp的结果才为1反之为0

现在我又说我需要程序员A或者程序员B两个人来完成它。

comp = A || B;

A和B必须全为0 ,comp的结果才为0反之为1

这里我们来简单写个代码来加深大家的理解:

cs 复制代码
#include<stdio.h>
int main()
{
	int age;
	scanf("%d", &age);
	if (age >= 0 && age < 18)
	{
		printf("小孩");
	}
	return 0;
}

当年龄在0~18之间(包括0不包括18)我们认为你都是一个小孩,这就要用到**&&**。

三.条件操作符

格式:

表达式1 ? 表达式2 : 表达式3

条件操作符是唯一一个三目操作符,它需要三个操作数,那么它是怎么运作的呢???

我们可以看到表达式1后边有一个**"?"** 这表示我们需要对表达式1的结果进行判断

当表达式1结果为真时 ,我们执行表达式2而不执行表达式3反之则执行3而不执行2

我们通过一个例子来具体讲解:

cs 复制代码
#include<stdio.h>
int main()
{
	int a = 10;
	int b = 20;
	int m = a > b ? a : b;
	printf("%d", m);
	return 0;
}

我们比较 a 和 b 的大小并让 m 来接收较大值 ,按规矩我们就是先对 a > b 进行判断为真则 m = a;为假则 m = b

其实细心的小伙伴们已经可以看出,这个操作符其实可以看做是一个简化的 if-else 条件语句

四.逗号表达式

表达式1 , 表达式2 , 表达式3...表达式n

逗号表达式,也就是用逗号隔开的多个表达式组成的整体。

逗号表达式会从左到右依次执行各个表达式,整个表达式的结果是最后一个表达式的结果。

cs 复制代码
#include<stdio.h>
int main()
{
	int a = 10;
	int b = 20;
	int c = (a > b, a = b + 10, a, b = a + 20);
	printf("%d", c);
	return 0;
}

来看这段代码,你能说出来c的值吗???

有的小伙伴可能直接说:这多简单了,不是说是最后一个表达式的值吗?那就是30呗。

大错特错!!!

我们说过,是多个表达式从左向右依次执行,而且如果表达式有赋值,那么就会改变变量的值

我们依次来看:

  • 先是 a > b,不成立,结果为0。
  • 然后是a = b + 10,a的值变为了30。
  • 然后又是单独的一个a,不用操作。
  • 最后是b = a + 20,b的值变为了50,也就是c = 50。

这里要注意一点,不管是条件操作符还是逗号表达式 ,如果表达式中有赋值运算 ,就一定要用括号括起来否则编译器则会识别为重定义,多次初始化

五.下标引用,函数调用,结构成员访问

1.下标引用操作符 [ ]

所谓下标,其实是数组中元素所对应的下标,也就是[ ]里的数字。

它的操作数是:一个数组名+一个索引值

int arr[10];//创建数组

arr[9] = 10;//使用下标引用操作符

[ ]的两个操作数是 arr 和 9 。

2.函数调用操作符 ( )

函数调用操作符能接收一个或多个操作数:第一个是函数名,剩余的都是传递给函数的参数。

实例如下:

cs 复制代码
#include<stdio.h>
int Add(int a, int b)
{
	return a + b;
}
int main()
{
	int a = 2;
	int b = 5;
	int sum = Add(a, b);//()函数调用操作符
	printf("haha");//()函数调用操作符
	return 0;
}

3.结构成员访问操作符

. 结构体.成员名

-> 结构体指针->成员名

cs 复制代码
#include<stdio.h>
struct Person
{
	char name[10];
	int age;
};
void Print(struct Person* pb)
{
	printf("%s %d\n", (*pb).name, (*pb).age);
	printf("%s %d\n", pb->name, pb->age);
}
int main()
{
	struct Person p = { "张三",18 };
	printf("%s %d\n",p.name,p.age);
	Print(&p);
	return 0;
}

如上代码,其中指针其实也可以用**"."** 来调用成员,但是没有**"->"**方便快捷。

总结

关于操作符剩余五种的知识讲解到这里就要结束啦,这五种相较于前五种较为简单,相信大家能够很快掌握!

喜欢博主文章的小伙伴们记得一键三连哦!

我们下期再见!

相关推荐
色空大师几秒前
23种设计模式
java·开发语言·设计模式
Bruce小鬼13 分钟前
QT文件基本操作
开发语言·qt
2202_7544215419 分钟前
生成MPSOC以及ZYNQ的启动文件BOOT.BIN的小软件
java·linux·开发语言
我只会发热26 分钟前
Java SE 与 Java EE:基础与进阶的探索之旅
java·开发语言·java-ee
懷淰メ35 分钟前
PyQt飞机大战游戏(附下载地址)
开发语言·python·qt·游戏·pyqt·游戏开发·pyqt5
hummhumm1 小时前
第 22 章 - Go语言 测试与基准测试
java·大数据·开发语言·前端·python·golang·log4j
宁静@星空1 小时前
006-自定义枚举注解
java·开发语言
hummhumm1 小时前
第 28 章 - Go语言 Web 开发入门
java·开发语言·前端·python·sql·golang·前端框架
武子康1 小时前
Java-07 深入浅出 MyBatis - 一对多模型 SqlMapConfig 与 Mapper 详细讲解测试
java·开发语言·数据库·sql·mybatis·springboot
珹洺1 小时前
C语言数据结构——详细讲解 双链表
c语言·开发语言·网络·数据结构·c++·算法·leetcode