请问 nAddend=chTemp1-'0'; 这一句是什么意思啊,为什么去掉之后就会出错, 可以讲的详细的吗?谢谢

[复制链接]
查看11 | 回复2 | 2011-1-5 17:56:10 | 显示全部楼层 |阅读模式
#include
#include
#include
#include
int main(int argc,char* argv[])
{
int nAddend=0,nSummand=0;
printf("Hello Console!\n----------------\n");
char chTemp1,chTemp2,sum;
cout<<"请输入加数:"<<endl;
chTemp1=getch();
printf("%c\n",chTemp1);
nAddend=chTemp1-'0';
printf("请输入被加数:\n");
chTemp2=getch();
printf("%c\n",chTemp2);
nSummand=chTemp2-'0';
sum=nAddend+nSummand;
printf("计算结果是:\n%d+%d=%d\n",nAddend,nSummand,sum);
cout<<"Fuck you\n";
system("pause");
return 0;
}

回复

使用道具 举报

千问 | 2011-1-5 17:56:10 | 显示全部楼层
首先,要知道0和'0'是不一样的,0是一个整数0,它在计算机内存的表示为0x00000000(假定32位计算机),而'0'是一个字符,在不同的字符集(ASCII或者unicode等)中表示是不同的,例如在ASCII中表示为0x00000030。chTemp是一个字符,例如chTemp = '9',此时chTemp代表的不是9这个数,而是'9'=0x00000039chTemp1-'0'表示的意思是:chTemp1代表的整数是多少,例如 '9' - '0' = 9
回复

使用道具 举报

千问 | 2011-1-5 17:56:10 | 显示全部楼层
把 字符类型的转换成整数型的 ,比如‘3’ - ‘0’ = 3 因为ascii码 中假设 ‘0’ 是 45 那么 '3' 就是48 当然'0'的ascii码得去查一查
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行