在K&R第二版第23页上,有一些码
if (c >= '0' && c <= '9')
++ndigit[c-'0'];
它继续。 我的问题是,为什么整数有'在每边? 什么是C-'0' ?
在K&R第二版第23页上,有一些码
if (c >= '0' && c <= '9')
++ndigit[c-'0'];
它继续。 我的问题是,为什么整数有'在每边? 什么是C-'0' ?
码的目的是转换的字符 '0'...'9'
成相应的整数值0...9
。 C 不保证代表的小数位的字符有什么特别的价值,但它确实保证它们是连续的,并以正确的顺序。 减法上面会永远给你正确的整数值。
目前在C.任何其他字符没有类似的保障
在ISO 9899:1999标准(又称C99)说:
执行字符集的成员的值是实现定义。 ...
设置为0的所有位字节,称为空字符,应在基本执行字符集存在; 它是用来终止字符串。 ...
在十进制数字上述列表0后的各字符的值应是比以前的值的1个以上。
正是同样的措辞中发现的N1570 ,这是目前的标准(C11)的最终公开草案。
别的不多说有关的字符之间的值,或关系。
'0'
是一个字符。 它具有整数值48 '9'
具有值57的值c - '0'
等于c - 48
,并且将对应的字符的整数值。 '0'
将是0
'1'
将是1
等。
'0'
是一个char
,即,一个字符。 每一个字符在内部用一个整数代表。 见ASCII 。 例如, '0'
具有整数值48
。