为什么65536*65536输出的是0

zhangfeifei89757 2012-02-24 10:03:08
cout<<65536*65536<<endl;
结果是0啊???


cout<<65537*65537<<endl;
又是正确的??怎么回事》?
...全文
410 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
pathuang68 2012-02-24
  • 打赏
  • 举报
回复
2^16 = 65536
2^32 = 2^16 * 2^16 = 65536 * 65536
所以第一个输出0是很正常的,就想在二进制运算时,1 + 1 = 10,如果结果只能有1位的话,那么前面的那个1就溢出了,你看到的结果就是1 + 1 = 0啦。
zhangfeifei89757 2012-02-24
  • 打赏
  • 举报
回复
哦。。是不是 c++默认接受结果是int。。int类型最大范围是 2147483647 所以溢出。。~~~
无间虚者 2012-02-24
  • 打赏
  • 举报
回复
严重溢出!
ppsharp 2012-02-24
  • 打赏
  • 举报
回复
cout<<65537*65537<<endl;

65537*65537 C++默认是哪个类型来接收这个结果的??????????
zhangfeifei89757 2012-02-24
  • 打赏
  • 举报
回复
第2个是错的。。
zhangfeifei89757 2012-02-24
  • 打赏
  • 举报
回复
是 计算机存不了这么大吗?那最大可以存多少 ?范围是什么?
KID_coder 2012-02-24
  • 打赏
  • 举报
回复
LZ确定第二个输出正确?
都溢出来
面包大师 2012-02-24
  • 打赏
  • 举报
回复
溢出严重。。。。
诶呦 2012-02-24
  • 打赏
  • 举报
回复
溢出了啊
编译的时候就提示了

64,648

社区成员

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

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