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

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

总结

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

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

我们下期再见!

相关推荐
散峰而望5 小时前
【算法竞赛】C++函数详解:从定义、调用到高级用法
c语言·开发语言·数据结构·c++·算法·github
冷凝雨5 小时前
复数乘法(C & Simulink)
c语言·开发语言·信号处理·simulink·dsp
CoderCodingNo5 小时前
【GESP】C++五级真题(贪心思想考点) luogu-B4071 [GESP202412 五级] 武器强化
开发语言·c++·算法
0和1的舞者5 小时前
Spring AOP详解(一)
java·开发语言·前端·spring·aop·面向切面
MoonBit月兔5 小时前
年终 Meetup:走进腾讯|AI 原生编程与 Code Agent 实战交流会
大数据·开发语言·人工智能·腾讯云·moonbit
智航GIS6 小时前
8.2 面向对象
开发语言·python
小小星球之旅6 小时前
CompletableFuture学习
java·开发语言·学习
智者知已应修善业6 小时前
【求等差数列个数/无序获取最大最小次大次小】2024-3-8
c语言·c++·经验分享·笔记·算法
kylezhao20197 小时前
C# 语言基础(变量、数据类型、流程控制、面向对象编程)
开发语言·计算机视觉·c#·visionpro
咯哦哦哦哦7 小时前
WSL + ubantu22.04 + 远程桌面闪退+黑屏闪退解决
linux·开发语言