繁体   English   中英

s[i] - '0' 是什么意思?

[英]What does s[i] - '0' mean?

以下代码来自 K&R 教科书,第 71 页:

val =10.0*val+s[i] -'0'

s[i] -'0'在这里是什么意思?

似乎s是一个字符数组或指向字符数组第一个元素的指针。 并且元素s[i]包含一个表示数字的字符,例如'5' 要转换此字符,例如在 ASCII 中的内部代码等于53 (而字符'0'内部代码为 48),则使用表达式

s[i] -'0'

这相当于

53 - 48

并且等于数字5

根据 C 标准(5.2.1 字符集)

3...在源和执行基本字符集中,上述十进制数字列表中 0 之后的每个字符的值都应比前一个值大 1。

所以在 ASCII 中有一个关系

字符代码值

    '0' - 48
    '1' - 49
    '2' - 50
    '3' - 51
    '4' - 52
    '5' - 53
    '6' - 54
    '7' - 55
    '8' - 56
    '9' - 57

例如,在 EBCDIC 中,表示数字的字符的内部代码是240 - 249 (0-9) 或十六进制表示法F0 - F9

因此,这是根据使用的字符集从字符中获取数字的标准方法。

它将char形式的int转换为实际的int

例如,如果s[i]'9'那么s[i] - '0'将产生9

该代码可能用于将带有十进制数字的字符串转换为表示的数字(例如,“1234”转换为 1234)。

s[i]为当前数字, s[i]-'0'为当前数字的数值(如'9'变为9)。

其余的 C 代码就是位置数值系统的工作原理。

假设s[i]包含0 - 9值,那么它会将它们转换为数字。

例如。 s[0]='1';

所以val=s[0]-'0';

将减少到val=49-48; //ascii values val=49-48; //ascii values

所以val = 1;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM