void push(float[],float);
这里,st[]
是浮点数据类型堆栈,exp[]
是存储后缀表达式的char数据类型数组。
push(st,(float)(exp[i]-'0'));
我无法弄明白(exp[i]-'0')
部分的目的。我们为什么要减去'0'
?
答案 0 :(得分:6)
一个字符基本上只是一个整数,其值是字符的编码。
在最常见的编码方案ASCII中,例如,字符48
为'3'
,以及例如51
的值someChar
是'3'
。现在,如果我们的变量someChar - '0'
包含字符51 - 48
,而您3
,则与'0'
相同,这将导致值{{} 1}}。
因此,如果您从某处读取数字作为字符,则减去{{1}}以获取该数字的整数值。
这也适用于其他编码,而不仅仅是ASCII,因为C规范说所有编码都必须具有连续顺序的数字。