一段c++的简单代码,求解释,在线等。

#include<iostream>usingnamespacestd;voidmain(){inti,c;chars[2][5]={"1980","9876"};for... #include <iostream>
using namespace std;
void main()
{
int i,c;
char s[2][5]={"1980","9876"};
for(i=3;i>=0;i--)
{
c=s[0][i]+s[1][i]-2*'0';
s[0][i]=c%10;
}
for(i=0;i<=1;i++)
cout<<s[i];
}
不明白为什么输出的是9876而不是07569876.

还有,那个2*‘0’是什么作用?
展开
 我来答
龍__鳳
2013-07-17 · TA获得超过2346个赞
知道小有建树答主
回答量:948
采纳率:0%
帮助的人:1397万
展开全部
c=s[0][i]+s[1][i]-2*'0';等价于c=s[0][i]-'0'+s[1][i]-'0';

s是字符数组s[0][i]-'0',是计算字符s[0][i]与字符'0'的ASCII码值的差
之所以在输出s[0]时不输出0756,是因为你的s[0][0]是结束符'\0'
因为s[0][0]=0,执行的是把结束符赋给s[0][0],而不是把字符'0'赋给s[0][0],因为结束符的ASCII值就是0
chouchouNUDT
2013-07-17 · TA获得超过1706个赞
知道小有建树答主
回答量:2954
采纳率:50%
帮助的人:1050万
展开全部
是将字母'O'视为它的ASCII码。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
painfulmiss
2013-07-17 · TA获得超过247个赞
知道小有建树答主
回答量:244
采纳率:0%
帮助的人:194万
展开全部
s[0][i] = c % 10 + '0';
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
坑死今晚打老虎
2013-07-17
知道答主
回答量:20
采纳率:50%
帮助的人:14.5万
展开全部
2*‘0’=2*48 注意 char和int的转换
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式