前言:我们在上篇文章中已经对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;
}
如上代码,其中指针其实也可以用**"."** 来调用成员,但是没有**"->"**方便快捷。
总结
关于操作符剩余五种的知识讲解到这里就要结束啦,这五种相较于前五种较为简单,相信大家能够很快掌握!
喜欢博主文章的小伙伴们记得一键三连哦!
我们下期再见!