初学者c++;:为什么这个代码会给出不同的结果? 我是一个初学用C++写东西的初学者。在下面的代码中,如果我为“adig”输入56,我会得到一个结果,如果我仍然输入56,我会得到另一个结果,但是从下面代码中的两行中删除注释标记(这样它们就成

初学者c++;:为什么这个代码会给出不同的结果? 我是一个初学用C++写东西的初学者。在下面的代码中,如果我为“adig”输入56,我会得到一个结果,如果我仍然输入56,我会得到另一个结果,但是从下面代码中的两行中删除注释标记(这样它们就成,c++,C++,初学者c++;:为什么这个代码会给出不同的结果? 我是一个初学用C++写东西的初学者。在下面的代码中,如果我为“adig”输入56,我会得到一个结果,如果我仍然输入56,我会得到另一个结果,但是从下面代码中的两行中删除注释标记(这样它们就成为代码的一部分,不再是注释),而是注释coutsumodd(adig); coutPS:不要使用int\u tmain(int-argc,\u-TCHAR*argv[]),即使VS生成了它。对于ITF16,只需int main(int argc

初学者c++;:为什么这个代码会给出不同的结果? 我是一个初学用C++写东西的初学者。在下面的代码中,如果我为“adig”输入56,我会得到一个结果,如果我仍然输入56,我会得到另一个结果,但是从下面代码中的两行中删除注释标记(这样它们就成为代码的一部分,不再是注释),而是注释
cout
sumodd(adig);

coutPS:不要使用
int\u tmain(int-argc,\u-TCHAR*argv[])
,即使VS生成了它。对于ITF16,只需
int main(int argc,char*argv[])
,或
int main(int argc,wchar\u t*argv[])
,就可以了。”…然后您正在打印函数的地址
sumodd
”——而不是实际打印地址,因为
std::cout
没有合适的重载,地址经过标准转换为
bool
true
,这意味着默认情况下打印
1
。不能使用
cin.get()
adig
输入56。只有5个将被消耗。在下一次输入操作中,6将保留在输入缓冲区中。
adig1-“0”做什么?我在试着理解,我不明白。@LolWalid:从
adig1
中减去字符
'0'
(在使用最广泛的字符集中为48)的数值。如果
adig1
本身是一个数字字符,则结果是该数字的数值。i、 例如,“0”变为0,“1”变为1,“2”变为2,等等。@LolWalid:查看ASCII图表以查看
0
的十进制值,然后进行数学运算以查看“5”的ASCII值--“0”的ASCII值将产生什么。(扰流板警报:它将数字的ASCII字符转换为实际数值。)
int sumodd( char adig1)

{
  int actualnum = adig1 - '0';
  return(actualnum);
}

int _tmain(int argc, _TCHAR* argv[])
{
  char adig;
  cout << "Enter a number\n"; 
  adig = cin.get();

  cout << sumodd(adig);
  //sumodd(adig);
  //cout << sumodd;

  return(0);
}
sumodd(adig);
cout<<sumodd; 
int res = sumodd(adig);
cout<<res;