繁体   English   中英

为什么它给我 Integer 溢出

[英]Why It is giving me Integer Overflow

它给了我 Integer 在 java 和 C 中的溢出但是当我在 ZA7F5F325426B92382171 中尝试它时给了我正确的答案。 有什么理由吗?

long long int a = 1000000011/2 * 5 ;
printf("%lld",a);

有两个原因:

  1. 大多数计算机语言使用固定大小的整数。 今天,这通常是 32 位。 计算的正确结果 2500000025 是一个 32 位数字,这意味着它对于带符号的 32 位类型来说太大了。 (在二进制补码中输出为 -1794967271。)另一方面,Python 不同:它使用任意精度算术
  2. 在 C 中,与许多计算机语言一样,表达式是“由内而外”计算的。 如果你说float f = 1 / 2; 您得到 0,因为编译器执行 integer 除法,而没有看到您想要获得浮点结果。 如果你说long long int a = 1000000011/2 * 5; 你得到一个溢出,因为编译器执行 integer 算术,而没有看到你想要得到一个long long结果。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM