栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

运算符和操作符(一),编程的世界尽在我的掌控之中

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

运算符和操作符(一),编程的世界尽在我的掌控之中

前言:每一种语言都有各自的运算符和操作符,可能相同,也可能不同,但都是条件判断的必备品,没有了它,变成就毫无意义。

1.四则运算符

四则运算当然是我们所熟悉的加减乘除了,也是最基础的1+1啊,3-1啊,6/2啊,3*3啊这些就是四则运算。但是他们都不是条件,因为他们没有等量关系。

这时候,我们的”==“出来了,两个等号表示等于,一个“=”等号表示赋值

“==”就可以组成条件了,一个等号是不能组成条件的!

例:

#include 
#include 
int main()
{
	int a = 0;
	printf("请输入n");
	scanf("%d",&a);
	if(a == 1 )
	{
		printf("yes");
	}
	else
	printf("no");
	
}

当我输入1时,打印结果为

当我输入其他结果时,打印结果为

如果我不小心在 if(a == 1)中少打了一个等号

那么它永远都是返回yes,因为在C语言中0为假,其他有值的变量为真.

#include 
#include 
int main()
{
	int a = 0;
	printf("请输入n");
	scanf("%d",&a);
	if(a = 1 )
	{
		printf("yes");
	}
	else
	printf("no");
	
}

 那该怎么避免这种尴尬的情况呢?

因为在C语言中两个等号和一个等号都可以当条件,所以不会报错的

但是该怎么做才能避免这种情况?

其实只用反过来写代码就可以了

比如:  1 == a

这样万一少打一个等号,编译器就会报错

因为 常量不能被改变,那什么是常量呢?以后说。

2.取余

取余也是常见的运算符,它常常被用来查找奇数偶数,质数合数,闰年平年等等

比如 2020%400 == 0,那么2020就是闰年

例:我们随便输入一个数,判断这个数是否为奇数

#include 
#include 
int main()
{
	//注:我把main函数的参数给删了,所以return 0;可以不用写
	int num = 0;
	printf("请输入n");
	scanf("%d",&num);
	if(num%2==0)
	{
		printf("偶数");
	}
	else
	printf("奇数");	
}

当我输入奇数时

当我输入偶数时

 3.++ 和 --

++ 自增

-- 自减

这两个一般用在循环体中,而且++和--在变量的前面和后面是有所不同的。

例:

#include 
#include 
int main()
{
	int a = 1;
	int b = 0;
	b = a ++;
	printf("a = %dtb = %d",a,b);
}

猜猜看 a和b分别是多少?

揭晓答案

 是不是有点不同呢?

因为 b = a ++是有运算优先级的

=的优先级大于++

所以先运行b = a 然后在 a ++

下表为优先级的详细关系

优先级

运算符

含    义

要求运算

对象的个数

结合方向

1

()

[]

->

.

圆括号

下标运算符

指向结构体成员运算符

结构体成员运算符

自左至右

2

!

逻辑非运算符

1

(单目运算符)

自右至左

~

按位取反运算符

++

自增运算符

--

自减运算符

-

负号运算符

(类型)

类型转换运算符

*

指针运算符

&

地址与运算符

sizeof

长度运算符

3

*

/

%

乘法运算符

除法运算符

求余运算符

2

(双目运算符)

自左至右

4

+

-

加法运算符

减法运算符

2

(双目运算符)

自左至右

5

<< 

>> 

左移运算符

右移运算符

2

(双目运算符)

6

<=

>=

关系运算符

2

(双目运算符)

自左至右

7

==

!=

等于运算符

不等于运算符

2

(双目运算符)

自左至右

8

&

按位与运算符

2

(双目运算符)

自左至右

9

^

按位异或运算符

2

(双目运算符)

自左至右

10

|

按位或运算符

2

(双目运算符)

自左至右

11

&&

逻辑与运算符

2

(双目运算符)

自左至右

12

||

逻辑或运算符

2

(双目运算符)

自左至右

13

? :

条件运算符

3

(三目运算)

自右至左

14

=

+=

-=

*=

/=

%=

>>=

<<=

&=

^=

|=

赋值运算符

2

自右至左

15

,

逗号运算符

自左至右

来源:C语言操作符优先级 - 畅思笔录 - 博客园 (cnblogs.com)

注:单目、双目、三目代表的是有几个表达式,比如双目代表的就是两条表达式

4.逻辑运算符

学过电子的同学因该都知道与、或、非三种门,C语言也有与、或、非三种关系

& 与

| 或

!非(“~”表示取反)

用等号可以一起表示

&= 与等于

|= 或等于

!= 不等于

(1)& 逻辑与

在电子中 1&1=1 1&0=0 ,口诀是:全1为1,有0为0;

1 和 0 都是二进制数

例:

#include 
#include 
int main()
{
	//3&6(按每一位进行与运算)
	//011(3的二进制)
//&   ↓↓↓
	//110(6的二进制)
//=   ↓↓↓
	//010(2的二进制)
	//所以3&6=2
	printf("%d",3&6);
	
}

结果为

 (2)  |(shift+)逻辑或

在电子中  1 | 1 = 1 ;1 | 0 = 1;口诀是:全0为0,有1为1。

#include 
#include 
int main()
{
	//3&6
	//011
	// |
	//110
	//=
	//111
	//所以3|6=7
	printf("%d",3|6);
}

 结果为

(3)!逻辑非

有0为1,非0为0    !1=0     !0 = 1;

#include 
#include 
int main()
{
	//!3 = 0
	//!0 = 1
	printf("!3 = %dn",!3);
	printf("!0 = %dn",!0);
}

结果为

你学废了吗?

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/857832.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号