C++中减去‘0’的作用( -'0' )

  我们在日常研(chao)究(xi)大佬们的代码时,可能会遇到减去字符‘0‘的情况,比如下图,这种语法问题吧说简单它不那么简单,毕竟不好理解;但说难吧也不难,其实就是让代码更简洁更有逼格的途径而已。

  说了那么多屁话那么这个减去零到底是干啥的呢?

  它的作用就是减去0的ASCII值:48。可以方便的用来转换大小写或者数字和和字符。比如我们可以写这么一个函数:

#include <cstdio>
#include <iostream>
using namespace std;

int change_chr_num( char x )
{
    return x - ‘0‘;
}

int main()
{
    char x;
    cin >> x;
    cout << change_chr_num(x) + 1;
    return 0;
}
/*
Input: 9
Output: 10
*/

  输入的是字符串类型下的9,输出的是计算后的整型10。同时这个语句等价于 return x-48,也就是说直接减去ACSII值48效果也是一样的,这点在我的博客里有用到,所以到最后这么个东西其实并没有什么卵用...

C++中减去‘0’的作用( -'0' )

时间: 2024-12-25 17:31:23

C++中减去‘0’的作用( -'0' )的相关文章

collection.toArray(new String[0])中new String[0]的作用

new string[0]的作用 比如:String[] result = set.toArray(new String[0]); Collection的公有方法中,toArray()是比较重要的一个. 但是使用无参数的toArray()有一个缺点,就是转换后的数组类型是Object[]. 虽然Object数组也不是不能用,但当你真的想用一个具体类型的数组,比如String[]时,问题就来了.而把Object[]给cast成 String[]还是很麻烦的,需要用到这个: String[] str

Thread.sleep(0)的作用

我们可能经常会用到 Thread.Sleep 函数来使线程挂起一段时间.那么你有没有正确的理解这个函数的用法呢?思考下面这两个问题: 假设现在是 2008-4-7 12:00:00.000,如果我调用一下 Thread.Sleep(1000) ,在 2008-4-7 12:00:01.000 的时候,这个线程会 不会被唤醒?某人的代码中用了一句看似莫明其妙的话:Thread.Sleep(0) .既然是 Sleep 0 毫秒,那么他跟去掉这句代码相比,有啥区别么?我们先回顾一下操作系统原理. 操作

unity中使用FingerGestures插件3.0

FingerGestures是一个unity3D插件,用来处理用户动作,手势. 译自FingerGestures官方文档 目录 FingerGestures包结构 FingerGestures例子列表 设置场景 教程:识别一个轻敲手势 教程:手势识别器 教程:轻击手势识别器 教程:拖拽手势识别器 教程:滑动手势识别器 教程:长按手势识别器 教程:缩放手势识别器 教程:旋转手势识别器 教程:自定义手势识别器 教程:识别手势事件 建议:使用.net代理事件 fingerGestures包结构 路径,

Ubuntu16.04 中 HyperLedger Fabric v1.1.0 环境准备

一.环境准备 1.1 Ubuntu下安装 crul sudo apt install curl curl是利用URL语法在命令行方式下工作的开源文件传输工具.它被广泛应用在Unix.多种Linux发行版中,并且有DOS和Win32.Win64下的移植版本. 作用:文件传输 1.2 安装 Docker and Docker Compose Docker-compose是支持通过模板脚本批量创建Docker容器的一个组件. 前期准备: 由于apt官方库里的docker版本可能比较旧,所以先卸载可能存

java中Integer i1= 0; Integer i2= 0; 为什么可以用 == 符号呢

java中Integer i1= 0; Integer i2= 0;  有i1 == i2,且有i1 = 1;那么i2为什么不会变成1呢? 我这个时候的想法是:这是因为java中整型常量是基于int的,而java中有自动包装机制,也就是说看起来i1,i2是Integer类型,但是其底层还是基于int类型的(不能理解的话在java中还有一个地方那就是Arrays.asList(T...args) 他返回一个基于数组的List,如果在List中改变其大小,那么将会引发异常[UnsupportedOp

结构体中最后一个成员为[0]或[1]长度数组(柔性数组成员)的用法

结构体中最后一个成员为[0]长度数组的用法:这是个广泛使用的常见技巧,常用来构成缓冲区.比起指针,用空数组有这样的优势:(1).不需要初始化,数组名直接就是所在的偏移:(2).不占任何空间,指针需要占用int长度空间,空数组不占任何空间.“这个数组不占用任何内存”,意味着这样的结构节省空间:“该数组的内存地址就和它后面的元素地址相同”,意味着无需初始化,数组名就是后面元素的地址,直接就能当指针使用. 这样的写法最适合制作动态buffer,因为可以这样分配空间malloc(sizeof(struc

linux中shell变量$#,[email&#160;protected],$0,$1,$2的含义解释

摘抄自:ABS_GUIDE 下载地址:http://www.tldp.org/LDP/abs/abs-guide.pdf linux中shell变量$#,[email protected],$0,$1,$2的含义解释: 变量说明: $$ Shell本身的PID(ProcessID) $! Shell最后运行的后台Process的PID $? 最后运行的命令的结束代码(返回值) $- 使用Set命令设定的Flag一览 $* 所有参数列表.如"$*"用「"」括起来的情况.以&qu

CentOS 6 中安装Node.js 4.0 版本或以上

如果想在CentOS 6 中安装Node.js >4.0,如果通过以往的方式安装: wget https://nodejs.org/dist/latest/node-v4.0.0.tar.xz tar zvxf node-v4.0.0.tar.xz cd node-v4.0.0 ./configure make && make install 会遇到报错提示: WARNING: C++ compiler too old, need g++ 4.8 or clang++ 3.4 (CX

javascript:void(0)的作用示例

在做页面时,如果想做一个链接点击后不做任何事情,或者响应点击而完成其他事情,可以设置其属性 href = "#",但是,这样会有一个问题,就是当页面有滚动条时,点击后会返回到页面顶端,或者是跳到设置的锚点的地方,用户体验不好. 通常的用法为: <a href="javascript:void(0)">单击此处看看效果</a> 实际上单击此处什么也不会发生,其中的javascript:void(0);形式是一个javascript的伪协议,是表