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...In both the source and execution basic character sets, the value of each character after 0 in the above list of decimal digits shall be
one greater than the value of the previous.
所以在 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 = 1;
以下代码来自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...In both the source and execution basic character sets, the value of each character after 0 in the above list of decimal digits shall be one greater than the value of the previous.
所以在 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 = 1;