一有点奇怪的输出语句(很短 就几句)

bean11222 2009-03-28 09:32:11
int main()
{
char *a = "123456";
cout <<(*(a+2)) <<" "<<(*(a+1)) <<endl;
cout << (*(a+2)) + (*(a+1)) <<endl;

return 0;
}
第一个cout 输出 3 和 2;
第二个输出101
为什么会输出101呢? 各位给解释下!!
...全文
86 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
rookie001 2009-03-28
  • 打赏
  • 举报
回复
你做加运算,是对应ASCII码的相加,即(50+51),还有类型隐性转换,char—〉int
hemiya 2009-03-28
  • 打赏
  • 举报
回复
char隐式转换为int了
brookmill 2009-03-28
  • 打赏
  • 举报
回复
ascii码
'2' --> 50
'3' --> 51
flameearth 2009-03-28
  • 打赏
  • 举报
回复
3 的ASCII码是51 2的 ASCII吗 是 50 而上面是字符 所以相加是ASCII码的相加
ltc_mouse 2009-03-28
  • 打赏
  • 举报
回复
应该是类型自动提升了~

针对两个char做+运算,结果将是int,于是出现了这种输出
bean11222 2009-03-28
  • 打赏
  • 举报
回复
我用的是VS2005哈!!

65,211

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧