【发布时间】:2022-01-23 09:00:41
【问题描述】:
如果你将两种不同的类型相乘,C++ 中的 AFAIK,结果将是更大的类型。 但在 Visual Studio 2022 中,这段代码:
#include <iostream>
int main()
{
long a = 7182L * 300000;
std::cout << a << '\n';
}
输出是-2140367296,这肯定是错的吗?或者我的 Visual Studio 安装有问题? 我尝试使用 clang online 和 clang 输出 2154600000
【问题讨论】:
-
long可以存储的最大值是多少?找出来,你就会知道这两个编译器都没有错。 -
换一种说法,
std::numeric_limits<long>::max()在您的系统上的值是多少? (您的在线编译器的值可能不同。标准允许这两种结果。)