iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > 其他教程 >C语言各种操作符透彻理解上篇
  • 933
分享到

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

2024-04-02 19:04:59 933人浏览 八月长安
摘要

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

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

操作符分类:

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

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语言 操作符内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: C语言各种操作符透彻理解上篇

本文链接: https://www.lsjlt.com/news/138569.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • C语言各种操作符透彻理解上篇
    前言:在我们程序编写领域,操作符给我们提供了很多的运算便利,但操作符琳琅满目,我们要怎样用好它们呢,下面就带你来熟悉熟悉这些多样的操作符。 操作符分类: 算术操作符 、移位操作符 、...
    99+
    2022-11-13
  • C语言各种操作符透彻理解下篇
    1.单目操作符 之前有了解到的三目操作符(?:),指的是有三个操作数 例如:3+5 其中,+是一个操作符 3是左操作数 5是有操作数 +则是一个双目操作符 那么什么是单目操作符呢,也...
    99+
    2022-11-13
  • C语言各种符号的使用介绍上篇
    目录1、注释符号1.1 注释的基本注意事项1.2 如何写出好的注释2、接续符和转移符2.1 续行功能2.2 转义字符3、单引号和双引号3.1 基本概念3.2 特殊情况4、逻辑操作符4...
    99+
    2022-11-13
    C语言符号 C语言符号的使用
  • C语言操作符超详细讲解上篇
    目录前言1、操作符的分类2、算术操作符3、移位操作符3.1 左移操作符3.1.1 正数左移1位3.1.2 负数左移1位3.2 右移操作符3.2.1 正数右移1位3.2.2 负数右移1...
    99+
    2022-11-13
  • C语言一篇精通链表的各种操作
    目录前言一、链表的介绍1.什么是链表2.链表的分类2.1.根据方向2.2.头结点2.3.循环/非循环 二、链表的实现1.结构体2.开辟结点3.打印4.尾插5.头插6.测试7...
    99+
    2022-11-13
  • C语言入门篇--充分理解操作符
    目录1.算术操作符1.1除法运算1.2取模运算2.移位操作符相关知识1.移位运算是站在二进制角度移位的2.左移右移,原始变量值不发生变化除非给原始变量赋值4.C语言中的移位运算符5....
    99+
    2022-11-12
  • C语言数组的各种操作梳理
    目录一、一维数组1.创建2.初始化3.使用4.数组在内存中的存储5.数组大小的计算二、二维数组1.创建2.初始化3.使用4.二维数组在内存中的存储三、数组作为函数参数1.关于数组名是...
    99+
    2022-11-13
  • C语言各类操作符全面讲解
    目录1 算术操作符2 移位操作符3 位操作符4 赋值操作符5 单目操作符5.1 ! 逻辑反操作5.2 sizeof 和数组6 关系操作符7 逻辑操作符8 条件操作符9 逗号表达式10...
    99+
    2022-11-13
  • C语言操作符超详细讲解下篇
    目录前言赋值操作符单目操作符单目操作符介绍sizeof 和 数组关系操作符逻辑操作符条件操作符逗号表达式下标引用与函数调用和结构成员[ ] 下标引用操作符( ) 函数调用操作符访问一...
    99+
    2022-11-13
  • 一篇文章带你了解C语言操作符
    目录一、操作符分类 二、算术操作符三、移位操作符1、左移操作符 2、右移操作符2.1算术移位 2.2逻辑移位 四、位操作符 1、按位...
    99+
    2022-11-12
  • C语言中各种操作符的详细介绍(纯干货!)
    目录算术操作符移位操作符位操作符赋值操作符 单目操作符(类型)   强制类型转换       ...
    99+
    2022-11-12
  • C语言超详细讲解顺序表的各种操作
    目录顺序表是什么顺序表的结构体顺序表的接口函数顺序表相关操作的菜单顺序表的初始化添加元素陈列元素往最后加元素往前面加元素任意位置加元素删除最后元素删除前面元素 删除任意元素...
    99+
    2022-11-13
  • C语言由浅入深讲解文件的操作上篇
    目录为什么使用文件什么是文件文件名关于文件的一些概念文件函数fopenfclose实例代码绝对路径文件的打开方式文件操作流程为什么使用文件 前面写的通讯录,增加人数退出程序后,数据就...
    99+
    2022-11-13
  • C语言实例上手深入理解操作符的使用
    目录1.闰年练习2.绝对值练习3.字符转换练习4.四则表达式练习5.隐式类型转换1.闰年练习 编写逻辑表达式判断用户给定的年份是否是闰年,年份可以被4整除但不能被100整除;年份可以...
    99+
    2022-11-13
  • C语言详解无头单向非循环链表各种操作方法
    目录链表引入链表介绍创建链表打印链表创建结点单链表尾插单链表头插单链表尾删单链表头删在pos位置之前插入数据在pos位置之后插入数据删除pos位置结点删除pos位置之后的结点销毁链表...
    99+
    2022-11-13
  • C语言冷知识之预处理字符串操作符详解
    目录在C语言中什么是标记预处理字符串操作符#字符串化操作符##标记(Token)连接操作符当年学习C语言的第一门课就提到过标记(Token)的概念,不过,相信在多年之后你再次听到这个...
    99+
    2022-11-16
    C语言 预处理字符串操作符 C语言 字符串操作符 C语言 操作符
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作