C++ 有人能解释一下吗';0'&引用; #包括//cin,cout 使用名称空间std; 内部主(空) { charc[80]; int i,和=0; c.getline(c,80); 对于(i=0;c[i];i++)//c[i]!='\0' 如果('0'

C++ 有人能解释一下吗';0'&引用; #包括//cin,cout 使用名称空间std; 内部主(空) { charc[80]; int i,和=0; c.getline(c,80); 对于(i=0;c[i];i++)//c[i]!='\0' 如果('0',c++,arrays,string,C++,Arrays,String,,则将字符从其字符代码(例如,ASCII中为48)转换为一个字符因此,它将字符 '0' 为整数0。正如Pete Becker在C语言和C++语言定义中所注释的那样,要求所有数字字符都是连续的。 '0'返回0的ASCII值。因此,使用数字而不是ASCII值,需要偏移量为ASCII值0。 “1”-“0”:=49-48::=1(49和48分别是1和0的ASCII值)。它将字符转换为整数值: #include <iostream> // cin, cout using namespace

,则将字符从其字符代码(例如,ASCII中为48)转换为一个字符因此,它将字符<代码> '0' <代码>为整数0。正如Pete Becker在C语言和C++语言定义中所注释的那样,要求所有数字字符都是连续的。

'0'返回0的ASCII值。因此,使用数字而不是ASCII值,需要偏移量为ASCII值0。
“1”-“0”:=49-48::=1(49和48分别是1和0的ASCII值)。

它将字符转换为整数值:

 #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;
}

0的ascii值是48,1的ascii值是49,依此类推。现在在你的程序中,
c[80]
是一个字符数组。因此,如果你从键盘输入1,编译器将其视为49(ascii值)进行算术运算。这就是为什么我们需要减去ascii值0(即48)获取等效整数。这可以通过从字符中减去“0”或直接减去48来实现。
e、 g.如果将
sum+=c[i]-“0”;
替换为
sum+=c[i]-48;
,代码也会起作用。但这不是一个好的做法。希望这有帮助。

看看ASCII表,你会发现一些有用的东西。我不会说这是一个完全相同的。那是关于
'a'-'0'
,这大部分是无意义的巧合,依赖于字符集。这个问题是关于减去 “0”来自
'0'
'9'
,我认为这是一个很好的定义。现在,这里的一些解释确实普遍适用于这个问题,但它们是不同的问题。哇,这么多非常详细的错误答案!
(如果问题没有结束,我会将此作为答案发布)它与ASCII无关(好吧,不是直接的)C和C++语言定义要求<代码> '0' <代码> ->代码> '9' <代码>具有连续和升序的值。这使得<代码> CH-‘0’< /代码>工作;否则,将没有简单、明智的机制将表示数字的字符转换为它们所代表的值。不仅仅是ASCII码。
character | ASCII code  | expression | equivalent | result
  '0'     |      48     | '0' - '0'  |  48 - 48   |   0
  '1'     |      49     | '1' - '0'  |  49 - 48   |   1
  '2'     |      50     | '2' - '0'  |  50 - 48   |   2
  '3'     |      51     | '3' - '0'  |  51 - 48   |   3
  '4'     |      52     | '4' - '0'  |  52 - 48   |   4
  '5'     |      53     | '5' - '0'  |  53 - 48   |   5
  '6'     |      54     | '6' - '0'  |  54 - 48   |   6
  '7'     |      55     | '7' - '0'  |  55 - 48   |   7
  '8'     |      56     | '8' - '0'  |  56 - 48   |   8
  '9'     |      57     | '9' - '0'  |  57 - 48   |   9