C语言各种操作符透彻理解上篇

 更新时间:2022年02月09日 11:10:52   作者:七忆岁和  
C 语言提供了丰富的操作符,有:算术操作符,移位操作符,位操作符,赋值操作符。让我们通读本篇来详细了解吧

前言:在我们程序编写领域,操作符给我们提供了很多的运算便利,但操作符琳琅满目,我们要怎样用好它们呢,下面就带你来熟悉熟悉这些多样的操作符。

操作符分类:

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

1.算数操作符(+、--、*、%、/)

这里我们着重讲一下取余(模)%操作符和除法/操作符

#include<stdio.h>
int main()
{
	//取余(模)、除法
	int ret1 = 10 % 3;//取余(模),得到的结果是相除之后的余数
	int ret2 = 10 / 3;//除法-得到的结果是商
 
	printf("ret1=%d\nret2=%d\n", ret1, ret2);
 
	//当/(除号)两端都是整数的时候,执行的是整数除法
	//当两端只要有一个浮点数,执行的就是浮点数的除法
	double ret = 10.0 / 3;
	printf("%lf\n", ret);
 
	return 0;
}

2.移位操作符(左移<< 和 右移>>)

这里注意!!!

移位操作符的操作数只能是整数,整数在内存中存的是补码,但最后输出的,也就是我们看到的,是原码。

(1)左移

#include<stdio.h>
int main()
{
	//2.移位操作符
	//左移
	int a = 5;
	//把a在内存中存储的二进制位向左移动2位
	int b = a << 2;
 
	printf("%d\n", b);
	printf("%d\n", a);
}

 计算演示:

(2)右移

分为算数右移和逻辑右移,具体是哪种右移取决于编译器。

算数右移:右边丢弃,左边补原来的符号位(负数右移几位左边就添几个1)

逻辑右移:右边丢弃,左边补0

(常见的编译器都是算数右移)

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

3.位操作符

我们直接上代码

#include<stdio.h>
int main()
{
    int a = 3;
	int b = -5;
	int x = a & b;
	int y = a | b;
	int z = a ^ b;
	printf("%d %d %d", x, y, z);
 
	return 0;
}

(1)按位与&

相同为1,不同为0

(2)按位或

只要有1则为1,两个同时为0才为0

(来个例题)

不能创建临时变量(第三个变量),实现两个数的交换

第一种,采用算数操作符来解决

#include<stdio.h>
int main()
{
	int a = 3, b = 5;
	printf("交换前:a=%d b=%d\n", a, b);
	a = a + b;//a+b=8
	b = a - b;//此时的a=8,b还是5,则b=8-5=3,也就是之前的a
	a = a - b;//次时的a还是8,而b已经赋值为3,所以这时的a=8-3=5,也就是之前的b
	printf("交换后:a=%d b=%d\n", a, b);
 
	return 0;
}

 但是这种方法不够完美,当a很大,b也很大的时候,则放不进整型里面,存在溢出问题,不能解决所有问题。那么我们就来看下第二种方法:使用异或

(相同的异或为0,任何数与0异或还是原的数)

#include<stdio.h>
int main()
{
	int a = 3, b = 5;
	printf("交换前:a=%d b=%d\n", a, b);
	a = a ^ b;
	b = a ^ b;//相当于a^b^b=a
	a = a ^ b;//相当于a^b^a(此时的b=a)=b
	printf("交换后:a=%d b=%d\n", a, b);
 
	return 0;
}

 但是这个方法的可读性不高,也存在缺陷,如果你有更好的方法记得告诉博主哦!

4.赋值操作符

(1)=,没什么好讲的

这里要提一点,连续赋值(不提倡),但要注意的是等号两边不能同时为常量

(2)复合赋值符

+= :a=a+b可以写成a+=b

 -= :a=a-b可以写成a-=b

*= :a=a*b可以写成a*=b

下面以此类推

/= 、%= 、>>= 、<<= 、&= 、|= 、^=

好啦,操作符详解的上篇今天就到这了,敬请期待下篇!!!

到此这篇关于C语言各种操作符透彻理解上篇的文章就介绍到这了,更多相关C语言 操作符内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 数据结构C语言链表的实现介绍

    数据结构C语言链表的实现介绍

    大家好,本篇文章主要讲的是数据结构C语言链表的实现介绍,感兴趣的同学赶快来看一看吧,对你有帮助的话记得收藏一下
    2021-12-12
  • C++实现SLR文法分析法

    C++实现SLR文法分析法

    大家好,本篇文章主要讲的是C++实现SLR文法分析法,感兴趣的同学赶快来看一看吧,对你有帮助的话记得收藏一下
    2022-02-02
  • C语言中的数据类型详解

    C语言中的数据类型详解

    在C语言中,数据类型指的是用于声明不同类型的变量或函数的一个广泛的系统。变量的类型决定了变量存储占用的空间,以及如何解释存储的位模式,本文将详细给大家介绍一下C语言中的基本数据类型,感兴趣的同学可以参考下
    2023-05-05
  • C语言操作符超详细讲解上篇

    C语言操作符超详细讲解上篇

    C 语言提供了丰富的操作符,有:算术操作符,移位操作符,位操作符,赋值操作符,单目操作符,关系操作符,逻辑操作符,条件操作符等。因为篇幅过大将分两篇讲解,让我们通读本篇来详细了解吧
    2022-04-04
  • C++使用智能指针实现模板形式的单例类

    C++使用智能指针实现模板形式的单例类

    这篇文章主要为大家详细介绍了C++使用了智能指针实现模板形式的单例类,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-06-06
  • C语言实现ATM机存取款系统

    C语言实现ATM机存取款系统

    这篇文章主要为大家详细介绍了C语言实现ATM机存取款系统,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-11-11
  • 解析VScode在Windows环境下c_cpp_properties.json文件配置问题(推荐)

    解析VScode在Windows环境下c_cpp_properties.json文件配置问题(推荐)

    这篇文章主要介绍了解析VScode在Windows环境下c_cpp_properties.json文件配置问题,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-05-05
  • C语言模拟实现库函数详解

    C语言模拟实现库函数详解

    C语言库函数是把自定义函数放到库里,是别人把一些常用到的函数编完放到一个文件里,供程序员使用,下面让我们一起来详细了解它
    2022-07-07
  • Visual Studio 2022编译C++20代码

    Visual Studio 2022编译C++20代码

    本文主要介绍了Visual Studio 2022编译C++20代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-07-07
  • C语言安全之数组长度与指针实例解析

    C语言安全之数组长度与指针实例解析

    这篇文章主要介绍了C语言安全之数组长度与指针,需要的朋友可以参考下
    2014-07-07

最新评论