gpt4 book ai didi

c++ - 为什么下面的代码没有给出想要的答案?

转载 作者:太空狗 更新时间:2023-10-29 19:44:44 27 4
gpt4 key购买 nike

昨天面试的时候面试官问了我一个问题:

为什么下面的代码没有给出想要的答案?

int a = 100000, b = 100000;

long int c = a * b ;

语言是C。

我告诉面试官,我们首先将 100,000 * 100,000 算作一个 int(overflow),然后将其转换为 long。

最佳答案

我猜线索是 integer overflow发生,但值如此之低,我看不到这种情况发生。

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

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

更新:

更新后的问题:100000 * 100000 而不是 10000 * 10000 结果是 10,000,000,000导致发生溢出。然后将该值转换为很长时间。

为防止此类溢出,正确的方法是将乘法中的两个值之一转换为长整型(通常为 64 位)。例如。 (长)100000 * 100000

关于c++ - 为什么下面的代码没有给出想要的答案?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5028916/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com