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 arr10;//创建数组

arr9 = 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;
}

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

总结

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

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

我们下期再见!

相关推荐
老当益壮梁奶奶1 分钟前
Linux软件编程学习笔记(二)Linux文件IO编程入门:从fopen到fgetc
linux·c语言·c++·笔记·学习
sunoo-2291 分钟前
C 语言文件 IO 全攻略:从基础函数到实战踩坑(BMP 读取 + 词典查询)
linux·c语言·前端·笔记·vscode·学习
longxiaozhang68 分钟前
C#继承:让代码少写一点,偷懒的好方法
开发语言·c#
weixin_4407305020 分钟前
python+request实现接口-参数化小结
开发语言·python
CHHH_HHH25 分钟前
【Linux系统篇】深入解析Linux文件系统:从磁盘寻址到软硬链接
linux·服务器·开发语言·后端·ubuntu
yngsqq34 分钟前
窗体快速取消
java·开发语言
XiaQ09191 小时前
Linux 常用命令学习笔记(用户管理篇):用户、组与权限的钥匙
linux·开发语言·笔记·学习
不可求~1 小时前
C++ 报错交给 AI 之前,先准备好这 8 类信息
开发语言·c++·人工智能
LuminousCPP1 小时前
栈和队列专题(四):LeetCode 232. 用栈实现队列|双栈分工 + 按需迁移 + 摊还 O(1)
c语言·数据结构·笔记·算法·leetcode
名字还没想好☜1 小时前
用 Python struct 解析二进制协议:pack/unpack、字节序与对齐踩坑
开发语言·python·二进制·struct