什么都不懂的小青蛙 2022-01-15 23:09 采纳率: 33.3%
浏览 79

强制类型转换 什么时候要用long long int

问题遇到的现象和发生背景

pta 乙级1030 完美数列

问题相关代码,请勿粘贴截图

img

运行结果及报错内容
我的解答思路和尝试过的方法

第十五行为什么这样写就对 (long long)(ch[i]*p)这样就不行
或者第十五行不加long long ,定义时long long int p就行了

我想要达到的结果

在我现在浅薄的认识里,爆是指int i,然后i的值超过了比如说2^32
这里又没有定义一个变量放ch[i]*p的值,也要long long 吗
不太理解

  • 写回答

2条回答 默认 最新

  • bekote 2022-01-15 23:37
    关注

    因为ch[i]*p如果ch[i]或p是int,ch[i]*p的结果也是int,如果它的值是大于2^32的话,会爆的,就是比如限制值最大为1111,就是只有四个位,然后有某个数二进制计算获得值本来是10000,由于只有四个位,所以实际上最终这个值是0000,就被误算为其他的结果了

    评论 编辑记录

报告相同问题?

问题事件

  • 创建了问题 1月15日

悬赏问题

  • ¥15 Apache显示系统错误3该如何解决?
  • ¥30 uniapp小程序苹果手机加载gif图片不显示动效?
  • ¥20 js怎么实现跨域问题
  • ¥15 C++dll二次开发,C#调用
  • ¥15 请教,如何使用C#加载本地摄像头进行逐帧推流
  • ¥15 Python easyocr无法顺利执行,如何解决?
  • ¥15 为什么会突然npm err!啊
  • ¥15 java服务连接es读取列表数据,服务连接本地es获取数据时的速度很快,但是换成远端的es就会非常慢,这是为什么呢
  • ¥15 vxworks交叉编译gcc报错error: missing binary operator before token "("
  • ¥15 JSzip压缩文件时如何设置解压缩密码