yuxi209 2022-01-09 20:54 采纳率: 50%
浏览 22
已结题

关于#c++#的问题:输入数过大就会输出46,下面是我自己的码#include <bits>

下面是我自己的码
#include <bits/stdc++.h>
using namespace std;
int n,num=0,s,n1;
int main(){
cin>>n;
for (int i=0;n>0;i++){
num=num+n%10;
n=n/10;
}
cout<<num;
return 0; 
}
只要超过10位结果就一定是46
求解决方法
  • 写回答

1条回答 默认 最新

  • MayPP___ 2022-01-09 21:04
    关注

    因为你定义的n为int型,int型的范围在-2147483648~2147483647之间,也就是超过这个10位数就会超出n的范围,编译器会给n最大值,而这个值能使结果为46
    解决:使用更大的整型类型,比如long 或者long long替换int型,如果需要不限制长度,可以使用数组。
    不懂再问,望采纳!

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 1月17日
  • 已采纳回答 1月9日
  • 创建了问题 1月9日

悬赏问题

  • ¥15 防火墙的混合模式配置
  • ¥15 Ubuntu不小心注销了要怎么恢复啊
  • ¥15 安装powerbuilder10卡在安装程序正在运行这个页面 没有下一步任何指令
  • ¥15 关于mpi的问题:请问遇到这种情况需要怎么解决,出现这个问题后电脑不能进行mpi多核运行只能进行单核运行
  • ¥50 微信聊天记录备份到电脑提示成功了,但还是没同步到电脑微信
  • ¥15 python怎么在已有视频文件后添加新帧
  • ¥20 虚幻UE引擎如何让多个同一个蓝图的NPC执行一样的动画,
  • ¥15 fluent里模拟降膜反应的UDF编写
  • ¥15 MYSQL 多表拼接link
  • ¥15 关于某款2.13寸墨水屏的问题