加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c – 为什么以下代码没有给出所需的答案?

发布时间:2020-12-16 10:28:50 所属栏目:百科 来源:网络整理
导读:昨天接受采访时,面试官问我一个问题: 为什么以下代码没有给出所需的答案? int a = 100000,b = 100000;long int c = a * b ; 语言是C. 我已经告诉采访者我们首先计算100,000 * 100,000作为int(溢出),然后将其投入很长时间. 解决方法 我猜测线索将会发生 int
昨天接受采访时,面试官问我一个问题:

为什么以下代码没有给出所需的答案?

int a = 100000,b = 100000;

long int c = a * b ;

语言是C.

我已经告诉采访者我们首先计算100,000 * 100,000作为int(溢出),然后将其投入很长时间.

解决方法

我猜测线索将会发生 integer overflow,但是如果价值这么低,我就不会发现这种情况.

int的最大(正)值(通常为32位)为:2,147,483,647

您的计算结果是:100,000,000

更新:

使用您更新的问题:100000 * 100000而不是10000 * 10000导致10,这将导致溢出.然后将该值转换为很长时间.

为了防止这种溢出,正确的方法是将乘法中的两个值之一转换为long(通常为64位).例如. (长)100000 * 100000

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读