C语言操作符详解

个人主页:点我进入主页

专栏分类:C语言初阶      C语言程序设计————KTV       C语言小游戏     C语言进阶

欢迎大家点赞,评论,收藏。

一起努力,一起奔赴大厂。

目录

1.算术操作符

 2.移位操作符

3.位操作符

4.赋值操作符

5. 单目操作符

6.关系操作符

7.逻辑操作符

8.条件操作符

 9.逗号操作符


       今天主要给大家带来的是操作符详解,主要包括算术操作符,移位操作符,位操作符,赋值操作符,单目操作符,关系操作符,逻辑操作符,条件操作符,逗号操作符。

1.算术操作符

算术操作符包括  +  -  /  *  %

我们写一个计算器代码来详细解释一下,代码如下:

#include<stdio.h>
int main()
{
	int a=10, b=3;
	int num1 = 0, num2 = 0, num3 = 0, num4 = 0, num5 = 0;
	num1 = a + b;
	num2 = a - b;
	num3 = a * b;
	num4 = a / b;
	num5 = a % b;
	return 0;
}

         在代码中我们可以清楚看到操作符的应用, 注意在% 操作符的两个操作数必须为整数。返回的是整除之后的余数,故被除数是浮点型的时候我们需要强制转换类型转换为整形。

 2.移位操作符

移位操作符包括<<和>>

 <<是左移,是将整形数据的补码向左移一位右边补0;

>>是右移,是将整形数据的补码向右移动一位,其中包括逻辑右移补0和算术右移补符号位。

 代码如下:

#include<stdio.h>
int main()
{
	int num = 10;
	printf("%d\n",num << 1);
	printf("%d\n", num >> 1);
	return 0;
}

        对于num<<1,我们先写出num的二进制位00000000000000000000000000001010,正数原码补码反码相同,左移00000000000000000000000000010100,是正数原码补码反码相同为20.对于num>>,我们先写出num的二进制位00000000000000000000000000001010,正数原码补码反码相同,右移00000000000000000000000000000101(我们是按照算数右移来计算)正数原码补码反码相同,得到为5.注意移位时需要移动正整数位不能移动负数位,而且num必须为整数。

3.位操作符

&   按位与(补码全为1为1,否则为0)

|    按位或(补码有1为1,否则为0)

^   按位异或(相同为0,不同为1)

其中操作数必须为整数

         对于按位异或我们可以得到两个相同的数异或为0,一个数和0异或还是这个数,故我们可以得到不使用第三个变量来交换两个数,代码如下:

#include<stdio.h>
int main()
{
	int a = 2, b = 10;
	a = a ^ b;
	b = a ^ b;
	a = a ^ b;
	printf("a=%d,b=%d", a, b);
	return 0;
}

        能进行交换的原因是异或遵循交换律,再根据据 两个相同的数异或为0,一个数和0异或还是这个数,即可完成交换。

4.赋值操作符

赋值操作符也即是 = ,+= , -= , *= , /= , %=由于常用这些操作符这里不详细讲解。

5. 单目操作符

!
-
+
&
sizeof
~
--
++
逻辑反操作
负值
正值
取地址
操作数的类型长度(以字节为单位)
对一个数的二进制按位取反
前置、后置--
前置、后置++

*                              间接访问操作符(解引用操作符)
(类型)                      强制类型转换

对于!我们可以理解为非例如!0也就是非0,对于sizeof,代码如下

#include<stdio.h>
int main()
{
	int arr[5] = { 1,2,3,4,5 };
	printf("%d\n", sizeof(arr));
	printf("%d\n", sizeof(arr[0]));
	printf("%d\n", sizeof(arr)/sizeof(arr[0]));
	return 0;
}

运行后

698bbbcbde5b4b64a09405e74969c601.png

由于sizeof单位是字节,我们也可以得到数组中有多少元素。

对于++和--,都分为前置和和后置,对于前置++a就是先让a加1再进行操作,后置a++就是先操作a再让a加1.对于前置和后置的结果都是让a加1.

6.关系操作符

>         大于

<         小于

==       等于

>=       大于等于

<=       小于等于

!=        不等于

7.逻辑操作符

&&     且

||        或

         例如我们想要表示0<=a<=2,需要用到&&,具体是a<=1&&a>=0.对于a<1且a>2,则需要用到||,具体为a<1||a>2.

8.条件操作符

表示为   exp1 ? exp2 : exp3

先判断exp1的真假,真则返回exp2的值,假返回exp3的值

 例如代码

#include<stdio.h>
int main()
{
	int a = 0;
	a = 30 > 20 ? 1 : 2;
	printf("%d", a);
	return 0;
}

运行结果为

b85db446184a4a77b8322ebfb4e6b8f1.png

 9.逗号操作符

表达式为        exp1, exp2, exp3, …expN

从第一个表达式开始到最后一个表达式,最后返回最后一个表达式的值,

代码如下;

#include<stdio.h>
int main()
{
	int a = 1;
	int b = 2;
	int c = (a > b, a = b + 10, a, b = a + 1);
	printf("%d\n", a);
	printf("%d\n", b);
	printf("%d\n", c);
	return 0;
}

 运行结果如下

da32e80e7af74dfc924a3529a7bfc6db.png

故我们可以得到在运算的过程中各个变量的值也会改变。 、

本次内容到此结束,希望大家可以一键三连。

评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

steventom

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

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

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

打赏作者

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

抵扣说明:

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

余额充值