我们如果对c语言里数据是如何存储的不清楚的话,就会导致我们对程序的理解越来越困难。说白了c语言就是人与机器交流的一种规则,而机器和芯片能明白的只能是0和1这两种高低电平。他们什么也不懂。只是一堆模拟电子和数字电路板集合。那人们怎么会操作这些破玩意儿呢?刚开始人们真的是010101的通过打孔来操作的。后来,人们学聪明了有了汇编又有了c语言、c++、java等等工具。其实每一个语言体系只是一些操作机器的规则而已。你遵守了这个规则就会成为编程高手。

拿c的字符型来说吧,为什么c要分字符型、int型?原因很简单,就是为了更方便的管理数据存储。事实上不管字符还是数据在计算机中都只能用01来表示,那我们怎么能区别他们的不同呢。就用多位的01来表示,一个不够用两个,我们知道用7个01就可以有128个数字被表示,也就是说用几个01就可以表示2的几次方个数字。于是人们提出了ASCII 码(查了百度百科,这样说:在计算机中,所有的数据在存储和运算时都要使用二进制数表示(因为计算机用高电平和低电平分别表示1和0),例如,象a、b、c、d这样的52个字母(包括大写)、以及0、1、2等数字还有一些常用的符号(例如*、#、@等)在计算机中存储时也要使用二进制数来表示,而具体用哪些二进制数字表示哪个符号,当然每个人都可以约定自己的一套(这就叫编码),而大家如果要想互相通信而不造成混乱,那么大家就必须使用相同的编码规则,于是美国有关的标准化组织就出台了所谓的ASCII编码,统一规定了上述常用符号用哪些二进制数来表示。

计算机中的字符包括数值、英文字母、标点符号、制表符号及其他符号。每一个字符都用一个特定的二进制代码来表示,这就是字符的编码。目前,字符编码采用的是美国信息交换标准代码,即ASCII 码 。它是用一个字节的低七位来表示一个字符的编码, 2^7 =128 ,最高位是 0 ,所以,用 ASCII 码可表示 128 个字符)。有了这个我们就不怕我们输入的字符,计算机不懂了。于是只要我们自己在程序中输入一个字符(例如:‘a’)计算机在编译过程中自动将它转换成97的二进制码,这就是为什么说字符本质上也是整型了,因为字符变量只是告诉计算机,我这个数据只占一个字节,也就是说我超不出128这个数去。而int则告诉我这个数可能很大,有65534那么大呢。

下面就说说为什么字符减'0'可以到相应的整数。现在比如我们要字符‘1’转换成数字1,就这么一个变化,我们看到了大家注意了字符型常量用''括起来的原因是,它们在计算机中都以各自的ASCII表示。而‘1’的对应编码是49的二进制码,但是我们的数字1,就等于1呀,所以为了由原来的‘1’实际上就是49的二进制变成现在的1对应的二进制1,只好用49-48=1了。但是在ASCII码里‘0’对应的刚好是48的二进制码,所以我们转换的时候只需要‘1’-‘0’=1;就可以了。而数字的ASCII码是按顺序规定的。所以其它字符要转换成数字都可以用减‘0’来表示。比如‘2’的ASCII是50,而我们要得到数字2,于是用‘2’-48=2了。看来当我们知道数据在计算机中的存储规则的时候,问题就迎刃而解了。

大小写字母的转换:先看ASCII码:a~z是97~122的二进制,而A~Z是65~90的二进制编码,于是我们就得出:大写字母=小写字母-32 ;这个公式了。当然这里的32我也可以这么写‘Z’=‘z’-'空格'。因为空格的ASCII码是32对应的二进制编码。

c++ 字符减去‘0’_字符串为什么减‘0’成整数相关推荐

  1. python 整数对应的字符,在Python中将字符串从字母解密为整数映射

    假设我们有一个由数字('0'-'9')和'#'组成的字符串s.我们必须将s映射到一个英文小写字符,如下所示:字符('a'至'i')分别由('1'至'9')表示. 字符('j'至'z')分别由('10# ...

  2. C语言 —— 把字符指针中的字符串,存入字符数组中

    问题描述:有一个用字符指针表示的字符串char *str = "0 12";  有一个数组 char buf[128] = {0}; 现在需要将字符指针表示的字符串"0 ...

  3. android 数组赋值字符串_字符串数组的赋值

    例如: main() { chars[30]; strcpy(s,"Good News!"); /*给数组赋字符串*/ } 上面程序在编译时,遇到chars[30]这条语句时,编译 ...

  4. 程序员编程艺术第三十 三十一章 字符串转换成整数,通配符字符串匹配

    分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow 也欢迎大家转载本篇文章.分享知识,造福人民,实现我们中华民族伟大复兴! 第三十~ ...

  5. 字符串转换成整数,带通配符的字符串匹配

    之前本一直想写写神经网络算法和EM算法,但写这两个算法实在需要大段大段的时间,而平时上班,周末则跑去北大教室自习看书(顺便以时间为序,说下过去半年看过的自觉还不错的数学史方面的书:<数理统计学简 ...

  6. 字符串转换成整数,字符串匹配问题

    本文转自csdn大神v_JULY_v的博客 地址: http://blog.csdn.net/v_july_v/article/details/9024123 阅读心得:自己原先想得太天真了... 第 ...

  7. 程序员编程艺术第三十~三十一章:字符串转换成整数,通配符字符串匹配

    第三十~三十一章:字符串转换成整数,带通配符的字符串匹配 前言 之前本一直想写写神经网络算法和EM算法,但写这两个算法实在需要大段大段的时间,而平时上班,周末则跑去北大教室自习看书(顺便以时间为序,说 ...

  8. 字符串转换成整数,通配符的字符串匹配问题

    http://blog.csdn.net/v_july_v/article/details/9024123#comments 前言 之前本一直想写写神经网络算法和EM算法,但写这两个算法实在需要大段大 ...

  9. 程序员面试题精选100题(17)-把字符串转换成整数[算法]

    题目:输入一个表示整数的字符串,把该字符串转换成整数并输出.例如输入字符串"345",则输出整数345. 分析:这道题尽管不是很难,学过C/C++语言一般都能实现基本功能,但不同程 ...

最新文章

  1. RocketMQ 实战 集群监控平台搭建
  2. 【ICLR 2022】在注意力中重新思考Softmax,多个任务达到SOTA
  3. 使用.htaccess删除.html扩展名_Visual Studio Code | 从下载安装到使用!
  4. 使用getline读入
  5. html代码type,HTML中type是什么意思
  6. 【vue2.0进阶】案例:用Vuex实现一个简单的计算器
  7. SEO工具,站长必备
  8. r语言 linux使用教程,R语言初级教程: R编程环境的搭建
  9. Django book 2.0
  10. 网站怎么移动适配?这些小技巧你必须要会
  11. 用IAR调试芯唐Cortex-M0系列芯片指南
  12. 靶子环数图片_一种靶子环数的图像识别方法与流程
  13. 2020-2021中国区块链企业发展白皮书.pdf.
  14. 人工神经网络实验项目:论文复现
  15. 计算机维修工技能培训课程,计算机维修工基本技能培训大纲.doc
  16. 私服上传出现Failed to transfer file ...... 400错误
  17. IDEA 2020.2 部署JSF项目
  18. 通过量子通信传递的密信为什么不可破解
  19. 2021-12-06 自动化专业C语言上机作业参考答案04
  20. HDU - 6557 Justice

热门文章

  1. matlab2c使用c++实现matlab函数系列教程-wilkinson函数
  2. vitualbox更改安装的位置不放在系统盘
  3. java界面怎么加图片不显示不出来_Java登录界面中添加背景图片,程序无错,但加载不了图片,求帮忙...
  4. 相机裁剪旋转_感受大画幅相机随心所欲的景深控制
  5. Crackme014
  6. 解决Python查询Mysql中文乱码问题
  7. Nginx+php+mysql+wordpress搭建自己的博客站点
  8. HDP Hive StorageHandler 下推优化的坑
  9. Arcgis栅格时序地图制作---时间轴动态展示多期影像
  10. Swift3 中文手册.CHM版