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

news2024/11/25 12:40:45

目录

一、前言

 二、什么是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语言字符串的进阶理解请持续关注我哦!!!!! 

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【proverif】proverif的语法-各种密码原语的介绍和具体编码

proverif-系列文章目录 【proverif】proverif的下载安装和初使用【proverif】proverif的语法-解决中间人攻击-代码详解【proverif】proverif的语法2-各种密码原语的编码 &#xff08;本文&#xff09; 文章目录 proverif-系列文章目录前言铺垫知识一、对称加密二、非对称加密三…

java架构师禁止在项目中使用继承,合理吗?

java架构师禁止在项目中使用继承&#xff0c;合理吗&#xff1f; 如果建议用组合替代继承&#xff0c;非必要不用继承&#xff0c;这个很合理的建议的。 在非必要的情况下不用继承&#xff0c;用组合替代有几个优势&#xff1a;最近很多小伙伴找我&#xff0c;说想要一些 Jav…

音视频转换软件Permute mac中文板特点介绍

Permute mac是一款Mac平台上的媒体格式转换软件&#xff0c;由Chaotic Software开发。它可以帮助用户快速地将各种音频、视频和图像文件转换成所需格式&#xff0c;并提供了一些常用工具以便于用户进行编辑和处理。 Permute mac软件特点 - 支持大量格式&#xff1a;支持几乎所…

【强化学习】时间循环最优决策:原理与Python实战

Python 如何在时间循环里最优决策&#xff1f;时间旅行和平行宇宙时间旅行引发的悖论强化学习策略梯度算法代码案例代码推荐阅读理论完备&#xff1a;实战性强&#xff1a;配套丰富&#xff1a; 如何在时间循环里最优决策&#xff1f; 时间循环是一类热门的影视题材&#xff0…

Unity减少发布打包文件的体积(二)——设置WebGL发布时每张图片的压缩方式

一个项目在发布成WebGL后&#xff0c;其体积至关重要&#xff0c;体积太大&#xff0c;用户加载会经历一个漫长的等待…轻则骂娘&#xff0c;重则用脚把电脑踢烂(扣质保金)… 那么如何减少发布后的体积呢&#xff0c;本文从图片的压缩开始入手。 前传回顾&#xff1a; Unity减…

语雀 P0 事故复盘,这 9 个字亮了!

大家好&#xff0c;我是鱼皮。 最近语雀不是出了个号称 “载入史册” 的 P0 级事故嘛 —— 连续宕机 7 个多小时无法使用&#xff0c;作为一个大厂知名产品&#xff0c;这个修复速度属实让人无法理解。要命的是我们公司的知识库也是放在语雀上的&#xff0c;导致那天下午大家摸…

【C语法学习】26 - strcat()函数

文章目录 1 函数原型2 参数3 返回值4 使用说明5 示例5.1 示例1 1 函数原型 strcat()&#xff1a;将src指向的字符串拼接在dest指向的字符串末尾&#xff0c;函数原型如下&#xff1a; char *strcat(char *dest, const char *src);2 参数 strcat()函数有两个参数src和dest&am…

现货黄金休市时间长不长?科普一下交易时间

先告诉你答案&#xff0c;现货黄金市场每天的交易时间很长&#xff0c;因为它全天的盘面是由亚洲、欧洲和北美时间无缝地连接而成&#xff0c;无论投资者身处何方&#xff0c;通过哪里的平台入市&#xff0c;每天基本上都可以享受到连续20多个小时的行情。 只要投资者有足够的精…

如何下载到正确版本的Steam?正确使用实现多开搬砖不被封号

各位游戏玩家们&#xff0c;你们是否也曾因为无法在Steam平台上正常下载游戏而感到烦恼呢&#xff1f;盗版问题已经严重影响了Steam的用户体验&#xff0c;也给玩家们带来了不必要的经济损失。但是&#xff0c;作为玩家&#xff0c;我们需要更多的方法来区分正版和盗版&#xf…

【送书活动】阿里云经历的历史级的大故障,能给我们什么启迪?

作为一个淘系出来的人&#xff0c;参加过声势浩大的S11、S2大促&#xff1b;也和阿里云数据库团队、内核团队等并肩作战过&#xff1b;更是手握过六七百万的预算支持阿里云的服务&#xff0c;更是他们的至尊群用户&#xff0c;得知此次重大故障后&#xff0c;也甚是惊讶。 从阿…

【23真题】难!985难度第一梯队!

今天分享的是23年华南理工大学811的信号与系统试题及解析 本套试卷难度分析&#xff1a;22年华南理工大学811考研真题&#xff0c;我也发布过&#xff0c;若有需要&#xff0c;戳这里自取&#xff01;本套试题难度中等偏上&#xff0c;只有十道大题&#xff0c;考察大家的综合…

MyBatis整合Spring Boot扫描Mapper相关配置

MyBatis是一款 Java 平台的优秀数据库映射框架&#xff0c;支持 XML 定义或注解&#xff0c;免除了几乎所有的 JDBC 代码以及设置参数和获取结果集的工作。 针对 Spring 提供 Mapper 扫描注解&#xff1a; 集成 Spring Boot 时&#xff0c;可以通过 MapperScan 注解&#xff0…

纯前端模板文件下载如何精确控制下载的文件名字

在写项目的时候&#xff0c;遇到了一个需要把给定的文件放到页面中&#xff0c;然后用户点击下载按钮将这个文件下载下来&#xff0c;我将其存入了云服务之中(这个云服务是不会清空的&#xff0c;内存又不值几个钱)&#xff0c;但是当我下载的时候&#xff0c;下载的文件名是存…

Java读取本地文件

import java.io.BufferedReader; import java.io.File; import java.io.FileReader; import java.io.IOException;public class Main {public static void main(String[] args) {String filePath "C:/Users/admin/Desktop/知识点记录.md";// 创建一个文件对象File f…

【MySQL8】1130 - Host *** is not allowed to connect to this MySOL server

问题描述 使用 Navicat 连接 MySQL8 报错&#xff1a; 1130 - Host *** is not allowed to connect to this MySOL server解决方案 use mysql;select host ,user from user; -- 将 root 用户的主机&#xff08;host&#xff09;值修改为 %&#xff0c;即允许从任何主机连接 …

navigator.geolocation.getCurrentPosition在谷歌浏览器不执行的问题

/*** 获取我的位置*/getNavigatorLocation: function () {navigator.geolocation.getCurrentPosition(function (success) {console.log(inner>>>, success);if (success && success.coords) {var data success.coords;var point "POINT(" data.…

Web前后端漏洞分析与防御

第1章 课程介绍 试看2 节 | 15分钟 介绍安全问题在web开发中的重要性&#xff0c;并对课程整体进行介绍 收起列表 视频&#xff1a; 1-1 Web安全课程介绍 (09:24) 试看 视频&#xff1a; 1-2 项目总览 (04:47) 第2章 环境搭建2 节 | 26分钟 本章节我们会搭建项目所需要的环境 …

两种常用的找到现货白银目标位的方法

在现货白银交易中&#xff0c;会买的不算厉害&#xff0c;会卖的人才能让利润真正的落袋为安。这里的“买”和“卖”指的不是买入和卖出&#xff0c;而是开仓和平仓。今天我们就来讨论一下&#xff0c;我们怎么样才能懂得“卖”&#xff0c;应该在哪里设置“卖”&#xff0c;也…

freeRTOS--软件定时器

一、什么是定时器&#xff1a; 简单可以理解为闹钟&#xff0c;到达指定一段时间后&#xff0c;就会响铃。STM32 芯片自带硬件定时器&#xff0c;精度较高、达到定时时间后会触发中断&#xff0c;也可以生成 PWM 、输入捕获、输出比较&#xff0c;等等&#xff0c;功能强大&am…