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

强制类型转换 什么时候要用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日