C语言——操作符(中)单目操作符、关系、逻辑、条件操作符-创新互联

操作符(中)
  • 前言
  • 单目操作符
    • 单目操作符介绍
  • 关系操作符
  • 逻辑操作符
  • 条件操作符
  • 小结

创新互联长期为上千家客户提供的网站建设服务,团队从业经验10年,关注不同地域、不同群体,并针对不同对象提供差异化的产品和服务;打造开放共赢平台,与合作伙伴共同营造健康的互联网生态环境。为乌鲁木齐企业提供专业的成都网站建设、网站建设乌鲁木齐网站改版等技术服务。拥有十年丰富建站经验和众多成功案例,为您定制开发。前言

前面我们学习了操作符中的算术、移位、位、赋值操作符。今天我们再来研究单目操作符、关系、逻辑、条件操作符。

在这里插入图片描述

单目操作符 单目操作符介绍
!         逻辑反操作
-         负值
+         正值
&         取地址
sizeof    操作数的类型长度(以字节为单位)
~         对一个数的二进制按位取反
--        前置、后置--
++        前置、后置++
*         间接访问操作符(解引用操作符)
(类型)    强制类型转换

我们来代码演示一下>

int main()
{int flag = 5;
	if (!flag)//对flag取反后判断是否为0
	{printf("hello\n");
	}
	else
	{printf("hehe\n");
	}
	return 0;
}

在这里插入图片描述
结果打印是“hehe”可以看出!是有一个取反的操作,屏幕上输出else中的语句。

int main()
{int a = 10;
	printf("%d\n", -a);
	printf("%d\n", +a);//+一般省略
	printf("%p\n", &a);
	printf("%d\n", sizeof(a));
	printf("%d\n", ~a);
	a = 10;
	printf("%d\n", a--);
	a = 10;
	printf("%d\n", --a);
	a = 10;
	printf("%d\n", a++);
	a = 10;
	printf("%d\n", ++a);
	return 0;
}

在这里插入图片描述
我们再来深入研究一下sizeof和数组之间的关系>

void test1(int arr[])
{printf("%d\n", sizeof(arr));//(2)
}
void test2(char ch[])
{printf("%d\n", sizeof(ch));//(4)
}
int main()
{int arr[10] = {0 };
	char ch[10] = {0 };
	printf("%d\n", sizeof(arr));//(1)
	printf("%d\n", sizeof(ch));//(3)
	test1(arr);
	test2(ch);
	return 0;
}

(1)(2)分别会输出什么呢?
(3)(4)分别会输出什么呢?
在这里插入图片描述
我们可以看到同样都是sizeof(arr),sizefo(ch),为什么输出的结果都不一样呢?
这就要回顾我们之前讲过的>
当数组传参的时候,实际上只是把数组的首元素地址传递过去了。
所以即使在函数参数部分写成数组形式:int arr[]表示依然是一个指针:int * arr
那么sizeof(arr)的结果是4.

数组知识详解

//++和--运算符
//前置++和--
int main()
{int a = 10;
	int x = ++a;
	//先对a进行自增,然后对使用a,也就是表达式的值是a自增之后的值。x为11。
	int y = --a;
	//先对a进行自减,然后对使用a,也就是表达式的值是a自减之后的值。y为10;
	return 0;
}
//后置++和--
int main()
{int a = 10;
	int x = a++;
	//先对a先使用,再增加,这样x的值是10;之后a变成11;
	int y = a--;
	//先对a先使用,再自减,这样y的值是11;之后a变成10;
	return 0;
}
关系操作符
>>=<<=
!=  用于测试“不相等”
==    用于测试“相等”

这些就很简单了,就不再多讲了
警告⚠:
请不要将==写成=喔!!!

逻辑操作符

逻辑操作符有哪些:

&&   逻辑与
||      逻辑或

区分逻辑与和按位与
区分逻辑或和按位或

1&2----->0
1&&2---->1
1|2----->3
1||2---->1

在这里插入图片描述
我们来看一道360的面试题>

int main()
{int i = 0, a = 0, b = 2, c = 3, d = 4;
	i = a++ && ++b && d++;
	printf("a = %d\nb = %d\nc = %d\nd = %d\n", a, b, c, d);
	return 0;
}

&&表达式中有假则为假,当计算出一个为假的时候后面的就不参与运算,那么i = a++ && ++b && d++;中只会执行到a++,我们来看看运行结果>
在这里插入图片描述
我们把题目变一下>

int main()
{int i = 0, a = 0, b = 2, c = 3, d = 4;
	i = a++||++b||d++;
	printf("a = %d\nb = %d\nc = %d\nd = %d\n", a, b, c, d);
	return 0;
}

||表达式中有真则真当计算出来为真的时候就停止运算,那么i = a++||++b||d++;中执行到++b,就不会继续执行下去,我们来看看运算结果>
在这里插入图片描述

条件操作符

条件操作符也称三目运算符

exp1 ? exp2 : exp3

我们来举个例子练习一下>

if (a >5)
    b = 3;
else
    b = -3;

这些代码完全可以写成条件操作符>

a>5?b=3:b=-3

再来一个例子>

int main()
{int a = 10;
	int b = 20;
	int m = 0;
	if (a >b)
		m = a;
	else
		m = b;
	m = (a >b ? a : b);//完全可以用这一行代码代替上面四行代码
	return 0;
}
小结

今天我们学习了单目操作符、关系、逻辑、条件操作符,相信大家看完有一定的收获。

种一棵树的最好时间是十年前,其次是现在! 把握好当下,合理利用时间努力奋斗,相信大家一定会实现自己的目标!加油!创作不易,辛苦各位小伙伴们动动小手,三连一波~~~,本文中也有不足之处,欢迎各位随时私信点评指正!

本节课的代码(gitee仓库)

你是否还在寻找稳定的海外服务器提供商?创新互联www.cdcxhl.cn海外机房具备T级流量清洗系统配攻击溯源,准确流量调度确保服务器高可用性,企业级服务器适合批量采购,新人活动首月15元起,快前往官网查看详情吧


当前名称:C语言——操作符(中)单目操作符、关系、逻辑、条件操作符-创新互联
链接URL:http://hbruida.cn/article/ceoois.html