C/C++ 字符 - ‘0‘ 或者 + ‘0‘ 的含义及区别(从ASCII码深度解析,小白一看就懂!!!)

目录

一、前言

 二、什么是ACSII码?

 三、深度理解字符 - ‘0‘ 或者 + ‘0‘ 

四、实战演练

五、共勉


一、前言

      想必大家在刷题或者是看别人写的代码中,经常会遇到 s[i]-’0‘ 或者  s[i]+’0‘ 这个情况,初次遇到这种代码,肯定是一头雾水,被折磨的很难受,在网上找解法,大多都是一些结论,并没有实质性的讲清楚原理是什么?如何去应用?

      所以本次博客将从原理----->应用,给大家依次讲清楚(主要是我不会,怕自己忘记😂)字符 - ‘0‘ 或者 + ‘0‘ 的含义及区别

 二、什么是ACSII码?

       ASCII码是一种用于表示字符的编码系统,它是计算机发展早期最常用的编码系统之一。 ASCII码的出现是为了解决计算机在处理文本时需要标准化字符表示的问题。 在ASCII码中,每个字符都被赋予了一个唯一的数值编码,这个编码是由7个二进制位组成的,因此ASCII码中总共可以表示128个不同的字符


 ⚠ 注意:       

        用通俗的语言来讲,它是方便  字符数字(十进制) 进行交换的,所以叫 美国标准信息交换码

🔑举例说明:

int main()
{
	// 定义一个字符
	char str = 'a';

	// 定义一个数字(十进制)
	int x = 65;

	printf("字符str的字符表示:%c  字符str的数字(十进制)表示:%d\n",str,str);

	printf("\n");

	printf("数字x的字符表示:  %c  数字x的数字(十进制)表示:  %d\n", x, x);

	return 0;
}

 三、深度理解字符 - ‘0‘ 或者 + ‘0‘ 

 🔑代码演示:

int main()
{
	char str = '9';
	 
    int temp = str - '0';

	int temp1 = str + '0';

	printf("%c %d\n", temp,temp);

	printf("%c %d\n", temp1,temp1);

	return 0;
}

 🔑运行结果:

🔑结果分析:

1.  str  和  ‘0’  都是字符  所以它们都遵从  ASCII  表的转换 


2. 根据ASCII表得出

  • str + '0' 的十进制数 结果为:57 + 48 = 105
  • str  - '0' 的十进制数 结果为:57 - 48  =  9

3. 根据ASCII表得出

  • str + '0' 的字符 结果为:十进制数 105 ----ASCII-------> i
  • str - '0' 的字符 结果为:十进制数  9  ------ASCII-------> \t (横向制表)

所以也就得出了,在结果展示中,那个空得位置,是横向制表占用了。



🔑总结:

  • 1. 在计算机中,所有的数据在存储和运算时都要使用二进制数表示,这些数据会根据我们需要的形式进行解释。ASCII码对照表就是这样的解释形式。
  • 2. 字符和字符相减或者相加的本质就是ASCII码的计算
  • 3. 用%d打印出来的结果是对应的ASCII码的十进制数,用%c打印出来的结果是对应的ASCII码的字符
  • 4. 在ASCI中I满足这样的规律:
  •       某个字符  x + ’ 0 ’ 就是指将 x 转变为字符型     char -> int
  •       某个字符  x - ’ 0 ’ 就是指将 x 转变为整形         int -> char

四、实战演练

🔑习题1
 

将一个整数的各位数字按照逆序构成一个字符串

请输入:569877

请输出:"778965"

代码如下:

int main()
{
	//char a[10];
	int len = 0;
	int n;
	scanf("%d", &n);
	// 统计这个数是几位数 ,方便后面给字符串开辟动态数组
	int m = n;
	int cout = 0;
	while (n)
	{
		n = n / 10;
		len++;
	}
	printf("这个数是%d位数,给字符串开辟%d个内存\n", len, len+1);
	// 要给 '\0' 多开一个内存
	char* a = (char*)malloc((len+1) * sizeof(char));
	while (m)
	{
		a[cout] = m % 10 + '0';
		m = m / 10;
		cout++;
	}
	// 保证字符串最后一位是'\0'
	a[cout] = '\0';
	printf("%s\n", a);
	free(a);
	a = NULL;
	return 0;
}

效果展示:



🔑习题2
 

将字符串中的数字转换出来
 

代码如下:

int main()
{
	char a[] = "WGB 加油99999";
	int len = strlen(a);
	int m = 0;

	for (int i = 0; i < len ; i++)
	{
		if (a[i] >= '0' && a[i] <= '9')
		{
			m = m * 10 + a[i] - '0';
		}
	}
	printf("%d\n", m);
	return 0;
}

五、共勉

 以下就是我对C/C++ 字符 - ‘0‘ 或者 + ‘0‘ 的含义及区别的理解,如果有不懂和发现问题的小伙伴,请在评论区说出来哦,同时我还会继续更新对C语言字符串的进阶理解请持续关注我哦!!!!! 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/159544.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

4.1指令系统-指令格式

现代计算机的结构 计算机的工作过程 指令的定义 指令&#xff08;又称机器指令&#xff09;&#xff1a; 是指示计算机执行某种操作的命令&#xff0c;是计算机运行的最小功能单位。 一台计算机的所有指令的集合构成改机指令系统&#xff0c;也称为指令集。 注意&#xff1…

拼多多百亿补贴商品详情API接口系列

拼多多API接口是拼多多网提供的一种应用程序接口&#xff0c;允许开发者通过程序访问拼多多网站的数据和功能。通过拼多多API接口&#xff0c;开发者可以开发各种应用程序&#xff0c;如店铺管理工具、数据分析工具、购物比价工具等。在本章中&#xff0c;我们将介绍拼多多API接…

Jquery 通过class名称属性,匹配元素

UI自动化过程中&#xff0c;常常需要判断某个元素是否满足条件&#xff0c;再走不通的脚本逻辑&#xff1b;、本文介绍如何通过jquery判断菜单是否展开&#xff0c;来决定是否执行菜单展开脚本&#xff1b;Jquery通过class名称属性&#xff0c;匹配元素 我们先分析&#xff0c;…

HTML5学习系列之项目实战1

HTML5学习系列之项目实战1 前言代码记录问题总结 前言 学习记录 代码 <div id"player"><audio id"musicbox"></audio><div id"controls" class"clearfix controls"><div id"play" class"…

Android 当中的 Fragment 协作解耦方式

Android 当中的 Fragment 协作解耦方式 文章目录 Android 当中的 Fragment 协作解耦方式第一章 前言介绍第01节 遇到的问题第02节 绘图说明 第二章 核心代码第01节 代理人接口第02节 中间人 Activity第03节 开发者A第04节 开发者B第05节 测试类 第一章 前言介绍 第01节 遇到的…

Ubuntu22.04 Apache2安装SSL证书 https

一、免费证书申请 https://help.aliyun.com/zh/ssl-certificate/user-guide/overview-of-free-certificates 得到 三、配置 执行以下命令&#xff0c;打开default-ssl.conf文件。 vim /etc/apache2/sites-available/default-ssl.conf 在default-ssl.conf配置文件中&#xff…

List is a raw type. References to generic type List<E> should be parameterized

List is a raw type. References to generic type List<E> should be parameterized 都是代码习惯问题懒

大型且复杂项目的资源管理怎么做?

职场中&#xff0c;我劝你做个“显眼包”&#xff01;作为天天背锅、踩坑、救火的项目经理&#xff0c;积极响应、随时反馈、成果汇报这些一样都不落下&#xff0c;项目才能顺利开展。这不&#xff0c;项目经理小李就是由于自己过于低调且内敛的性格&#xff0c;差点把项目都做…

影像仪全景导航,快速定位产品特征!

**在工业制造领域中&#xff0c;影像仪全景导航可以提供全景影像&#xff0c;将整个区域的图像精准地捕捉下来&#xff0c;并通过软件算法实现高效处理&#xff0c;以呈现出更加清晰和详细的视图。**这一技术不仅可以提高定位精度&#xff0c;同时还能大幅度提升定位效率。与自…

Pytorch torch.exp()的使用举例

代码实验展示: Microsoft Windows [版本 10.0.18363.1256] (c) 2019 Microsoft Corporation。保留所有权利。C:\Users\chenxuqi>conda activate ssd4pytorch1_2_0(ssd4pytorch1_2_0) C:\Users\chenxuqi>python Python 3.7.7 (default, May 6 2020, 11:45:54) [MSC v.191…

轻量封装WebGPU渲染系统示例<34>-数据驱动之Json构建场景

场景和数据之间的互通&#xff1a; 场景数据化或者数据化场景&#xff0c;是当前的主流场景数据构成方式。方便传输方便交换甚至是交互。 内置数据互通机制更有利于用户在各种应用场合下实现具体的3D相关的应用需求。用户只需要关心标准的或者约定好的数据定义及操作方式就能方…

GPS信号的数字接收处理matlab仿真,包括频率点搜索,捕获跟踪,相关峰检测等步骤

目录 1.算法运行效果图预览 2.算法运行软件版本 3.部分核心程序 4.算法理论概述 4.1. 频率点搜索 4.2. 捕获跟踪 4.3. 相关峰检测 5.算法完整程序工程 1.算法运行效果图预览 低信噪比下仿真结果如下&#xff1a; 2.算法运行软件版本 matlab2022a 3.部分核心程序 ...…

直接插入排序

一.介绍. 其基本思想为数据元素被已经放入一个已经排好的有序数组中&#xff0c;现插入一个元素进入该数组&#xff0c;按顺序&#xff08;即大小关系&#xff09;放进适当位置&#xff0c;并且其后面的元素都向后移动移位。 如图&#xff1a; 对于上述问题&#xff1a; 代码…

【AI视野·今日Sound 声学论文速览 第三十六期】Mon, 30 Oct 2023

AI视野今日CS.Sound 声学论文速览 Mon, 30 Oct 2023 Totally 7 papers &#x1f449;上期速览✈更多精彩请移步主页 Daily Sound Papers Style Description based Text-to-Speech with Conditional Prosodic Layer Normalization based Diffusion GAN Authors Neeraj Kumar, A…

湖科大计网:网络层

一、网络层概述 一、基本概念 网络层的主要任务是实现网络互连&#xff0c;进而实现数据包在各网络之间传输。 若只有单个网络&#xff0c;只需要物理层和数据链路层即可。 不同的异构网络需要路由器将其互连&#xff0c;路由器的每一个接口代表一个不同的网络&#xff0c;也区…

Windows安装nvm【node.js版本管理工具】

目录 下载安装包 安装 配置 配置node的国内镜像源 配置npm的国内镜像源 常用命令 查看可安装的node版本 安装指定的版本 查看已有的node版本列表 切换版本 下载安装包 https://github.com/coreybutler/nvm-windows/releases/tag/1.1.11 安装 安装过程就不贴了&#xff0…

leetcode刷题日志-14最长公共前缀

编写一个函数来查找字符串数组中的最长公共前缀。 如果不存在公共前缀&#xff0c;返回空字符串 “”。 示例 1&#xff1a; 输入&#xff1a;strs [“flower”,“flow”,“flight”] 输出&#xff1a;“fl” 示例 2&#xff1a; 输入&#xff1a;strs [“dog”,“raceca…

Java进阶笔记(面向对象后, 持续更新)

常用API 游戏打包成exe 考虑的因素 要有图形化界面代码要打包起来游戏用到的图片也要打包JDK也要打包 核心步骤 把所有代码打包成一个压缩包, jar后缀的压缩包把jar包转换成exe安装包把第二部的exe, 图片, JDK整合在一起, 变成最终的exe安装包 1. Math 是一个帮助我们用…

Android Studio 写一个Java调用c++ 的demo

前提条件&#xff1a; 本地已经配置好了ndk环境,如果没有配置好&#xff0c;建议参考macos 配置ndk环境-CSDN博客 这篇链接。 新建一个Empty Project 比如我这里的Project的名字是HelloJNI&#xff0c;包名是com.example.hellojni 然后在src目录下&#xff0c;右键选择Add C …

解决Requests中使用httpbin服务器问题:自定义URL的实现与验证

问题背景 在使用Python的Requests模块进行单元测试时&#xff0c;可能会遇到无法使用本地运行的httpbin服务器进行测试的问题。这是因为测试脚本允许通过环境变量HTTPBIN_URL指定用于测试的本地httpbin实例&#xff0c;但在某些测试用例中&#xff0c;URL是硬编码为httpbin.or…