【发布时间】:2020-02-26 00:19:59
【问题描述】:
考虑以下代码片段:
char c = 'a';
std::cout << int(c) << " " << c - '0' << std::endl;
我的输出是97 49。
谁能告诉我它们之间有什么区别?
例如,如果我试图查找字符串中重复字符的数量:
int duplicates[256];
//.. run over string
1. duplicates[c]++;
2. duplicates[c-'0']++;
那么我应该选择哪一个,它们之间有什么区别?
提前致谢。
【问题讨论】:
-
也要考虑负字符值
-
97 是字符
'a'的数值。 48 是字符'0'的数值。 49是两者之间的差异。不要使用c - '0',因为您的字符串可能包含小于'0'的字符。见asciitable.com -
@John "Don't use
c - '0'" - 完全可以使用,只要确保c是数字优先,例如@ 987654322@