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

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

总结

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

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

我们下期再见!

相关推荐
会飞De琥珀7 分钟前
java工具类,字符串转时间
java·开发语言
源码潇潇和逸逸22 分钟前
独立部署高校圈子平台:PHP+UniApp打造社交+交易+服务一站式校园解决方案
开发语言·uni-app·php
LINgZone230 分钟前
深入解析:Cglib与JDK动态代理的实现原理、区别及性能对比
java·开发语言
一次旅行30 分钟前
今日心理学知识分享(三)
开发语言·javascript·程序人生·ecmascript
AI科技星1 小时前
光速螺旋量子几何统一场论——基于 v ≡ c 公理的四大基本力全维度求导证明与精准数值验证
c语言·开发语言·人工智能·算法·机器学习·平面
天天学IT1 小时前
第三章 Qt 编译及安装
开发语言·qt·qt教程·qt6教程
xyq20241 小时前
Window Memcached 安装指南
开发语言
牛十二1 小时前
openclaw安装mcporter搜索小红书
开发语言·javascript·ecmascript
程序猿编码1 小时前
隐匿注入型ELF加壳器:原理、设计与实现深度解析(C/C++ 代码实现)
c语言·网络·c++·elf·代码注入
老刘说AI1 小时前
WorkFlow Agent案例:auto_document_agent(文件自动处理)
开发语言·数据库·人工智能·python·神经网络·自然语言处理