在乘除常量时,编译器可以处理的数字大小是否有明确定义的限制?

#define val1 1000000000000000
#define val2 <some really really big number>

std::cerr << val1 * val2 << std::endl;

给定val2足够大的值,这会由于c++中的数值限制而产生错误吗?如果是这样,该限制在哪里/如何定义?

最佳答案

它将被视为整数,因此将应用最大整数(在limits.h中定义)

如果您想要一个大数字,请使用1000 ....... 0000L将其定义为长整数。

关于c++ - 数值极限-乘以非常大的常数时是否有极限?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7663071/

10-13 08:29