C语言第十五课:操作符详解(中)——单目、关系、逻辑、条件操作符

目录

前言:

一、单目操作符!、-、+、&、sizeof、~、--、++、*、(类型):

        1.逻辑反操作!:

        2.正负值操作符-、+:

        3.取地址操作符 &与解引用操作符 *:

        ①.取地址操作符&:

        ②.解引用操作符 *:

        4.类型长度计算sizeof:

        5.按位取反~:

        6.前置与后置++、--操作符:

        7.强制类型转换(类型):

二、关系操作符>、>=、<、<=、==、!=:

三、逻辑操作符&&、||:

四、条件操作符:

五、总结:


前言:

        前面我们对操作符进行了简单的分类:

算术操作符 移位操作符 位操作符
赋值操作符 单目操作符 关系操作符
逻辑操作符 条件操作符 逗号表达式
下标引用、函数调用和结构成员

        而在上一篇文章中我们学习了算数、移位、位与赋值操作符的相关知识。本文我将继续按照顺序,带领小伙伴们继续学习单目、关系、逻辑、条件这些我们在编写代码时常用的操作符。

一、单目操作符!、-、+、&、sizeof、~、--、++、*、(类型):

        单目操作符,通俗的来讲就是只有一个操作数的操作符。是一类在进行操作时,只对一个操作数进行处理的操作符。

        1.逻辑反操作!:

        单目操作符' ! '表示逻辑反操作,即在逻辑层面表示“”、“”、“”等含义,例如:

#define _CRT_SECURE_NO_WARNINGS 1

#include<stdio.h>

int main()
{
	int flag = 1;
	if (flag)
	{
		printf("FLAG\n");
	}
	if (!flag)
	{
		printf("!flag\n");
	}
	return 0;
}

        编译运行查看输出打印结果:

        我们可以看到,在我们定义了一个值为1的变量flag后,我们使用了if分支语句进行了判断,判断的条件即为变量flag,此时flag的值为1判断为逻辑“真”执行打印操作将“ FLAG ”字样打印在了我们的屏幕上。

        接着我们又使用另一个if分支语句进行了判断,此时的判断条件变成了对flag进行逻辑反操作,也就是此时flag为1,判断为“真”,逻辑取反,为“假”,则不执行第二个if语句中的操作,不打印字样“ !flag ”。

        这样我们就知道了逻辑反操作符的作用方式了,那么它的作用会对值产生影响吗?我们一起来验证一下:

#define _CRT_SECURE_NO_WARNINGS 1

#include<stdio.h>

int main()
{
	int flag1 = 5;
	int flag2 = !flag1;
	int flag3 = !flag2;
	printf("flag1 = %d\n", flag1);
	printf("flag2 = %d\n", flag2);
	printf("flag3 = %d\n", flag3);
	return 0;
}

        我们首先定义了一个值为5的变量flag1,接着定义了一个值为对flag1逻辑取反操作的变量flag2,又定义了一个值为对flag2逻辑取反操作的变量flag3。即flag2、flag3为两个对flag1连续进行两次逻辑取反操作的变量,并将它们的值全部打印在屏幕上,我们把它编译运行看看结果:

        我们可以看到,该操作符在执行时是会对操作数的值造成影响的,当值为5时为真(在计算机的逻辑判断中,0为假,非0为真),进行逻辑取反后值变为0为假再次进行逻辑取反操作后不会变为原本的值,而是变为了逻辑“真”值1

        2.正负值操作符-、+:

        很多小伙伴们看到这里可能会有疑问了,上面不是说单目操作符指的是只有一个操作数的操作符吗?可是在执行加减操作时的操作符操作的是两个操作数呀?在这里小伙伴们应当注意,这里我们要学习的符号' - '和' + ',不是指算数运算中的加法和减法运算,而是用于表示数值政府的正负值操作符:

#define _CRT_SECURE_NO_WARNINGS 1

#include<stdio.h>

int main()
{
	int flag1 = 5;
	int flag2 = -flag1;
	int flag3 = +flag1;
	int flag4 = +flag2;
	printf("flag2 = %d\n", flag2);
	printf("flag3 = %d\n", flag3);
	printf("flag4 = %d\n", flag4);
	return 0;
}

        我们可以看到,通过使用这两个单目操作符,我们可以改变数据元素值的正负,同时我们也看到,在正数前面使用正号' + '时,数据元素的之不会发生变化 ,故正数前的' + '可以省略,同时,由于正号不会对数据元素的值造成影响,所以绝大多数情况下会被省略,在我们编写代码的过程中,除了用于标记值的正负供我们自己进行区分外,基本不会用到:

评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

銮崽的干货分享基地

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值