【发布时间】:2013-03-20 09:34:17
【问题描述】:
#include <iostream> // cin, cout
using namespace std;
int main(void)
{
char c[80];
int i, sum=0;
cin.getline(c,80);
for(i=0; c[i]; i++) // c[i] != '\0'
if('0'<=c[i] && c[i]<='9') sum += c[i]-'0';
cout<< "Sum of digits = " << sum << endl;
getchar();
getchar();
return 0;
}
我明白一切都接受 sum += c[i] - '0';我删除了“-'0'”,但它没有给我正确的答案。这是为什么呢?
【问题讨论】:
-
看看 ASCII 表,你会发现一些有用的东西。
-
我不会说这是 stackoverflow.com/questions/11098626/understanding-c-0 的完全相同的副本。那是关于
'a' - '0',这主要是无意义的巧合,并且与字符集有关。这个问题是关于从'0'中减去'0'..'9',我认为这是明确定义的。现在,确实有一些解释普遍适用于这个,但它们是不同的问题。