从C中的变量中减去'0'是什么意思?

End*_*dra 1 c stack

void push(float[],float);
Run Code Online (Sandbox Code Playgroud)

这里st[]是浮点数据类型堆栈,exp[]是存储后缀表达式的char数据类型数组.

  push(st,(float)(exp[i]-'0'));
Run Code Online (Sandbox Code Playgroud)

我无法弄清楚(exp[i]-'0')部分的目的.我们为什么减去'0'

Som*_*ude 6

一个字符基本上只是一个整数,其值是字符的编码.

在最常见的编码方案中,ASCII,例如字符的值'0'48,和例如的值'3'51.现在,如果我们有一个someChar包含该字符的变量'3',那么someChar - '0'它与执行51 - 48该变量的变量相同3.

因此,如果您从某处读取一个数字作为字符,则减去'0'该数字的整数值.

这也适用于其他编码,而不仅仅是ASCII,因为C规范说所有编码必须具有连续顺序的数字.