【问题标题】:What does it mean to subtract '0' from a variable in C?从 C 中的变量中减去“0”是什么意思?
【发布时间】:2016-04-22 06:53:05
【问题描述】:
void push(float[],float);

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

  push(st,(float)(exp[i]-'0'));

但我无法弄清楚(exp[i]-'0') 部分的用途。为什么要减去'0'

【问题讨论】:

  • char ASCII码转换为int
  • @Sourav Ghosh,假设我们使用 if (isdigit(exp[i] )) 之类的“if 条件”,那么我们还需要在 if-body 中进行转换吗??
  • 是的,因为char的值仍然是一个代码,而不是实际数字的值。
  • 我的意思是:if(isdigit(exp[i])) { push(st,(float)(exp[i])}; 是正确的还是需要转换?
  • 我想我已经回答了。是的,它仍然需要转换。

标签: c stack


【解决方案1】:

一个字符基本上无非是一个整数,其值为字符的编码。

在最常见的编码方案中,ASCII,例如的值字符'0'48,例如的值'3'51。现在,如果我们有一个包含字符 '3' 的变量 someChar 并且您执行 someChar - '0' 与执行 51 - 48 相同,这将导致值 3

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

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

请注意,此“技巧”保证适用于任何非数字字符。

【讨论】:

    猜你喜欢
    • 2011-08-30
    • 1970-01-01
    • 1970-01-01
    • 2019-03-18
    • 2021-11-25
    • 2012-06-26
    • 1970-01-01
    • 2019-12-08
    • 2012-04-17
    相关资源
    最近更新 更多