gpt4 book ai didi

c++ - 为什么 long long 2147483647 + 1 = -2147483648?

转载 作者:行者123 更新时间:2023-12-01 08:20:32 28 4
gpt4 key购买 nike

这个问题在这里已经有了答案:





C++ literal integer type

(2 个回答)


去年关闭。




为什么此代码不打印相同的数字? :

long long a, b;
a = 2147483647 + 1;
b = 2147483648;
printf("%lld\n", a);
printf("%lld\n", b);

我知道 int 变量的最大数量是 2147483647,因为 int 变量是 4 字节。
但据我所知,long long 变量是 8 字节,但为什么这段代码会这样呢?

最佳答案

2147483647 + 1被评估为两个 ints 的总和因此溢出。
2147483648太大,装不下 int因此被编译器假定为 long (或 MSVC 中的 long long)。因此它不会溢出。

将求和作为 long long使用适当的常量后缀,即

a = 2147483647LL + 1;

关于c++ - 为什么 long long 2147483647 + 1 = -2147483648?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61624859/

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