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 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容