数字限制 - 乘以非常大的常数时是否有限制?

时间:2011-10-05 14:38:47

标签: c++

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

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

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

如果val2的值足够大,是否会因c ++中的数字限制而产生错误?如果是,那么该限制在何处/如何定义?

5 个答案:

答案 0 :(得分:4)

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

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

答案 1 :(得分:4)

限制在numeric_limits类中定义。

答案 2 :(得分:2)

有一个依赖于实现的最大值,但是如果你溢出了 常数运算,执行是需要发出的 诊断(错误信息)。

答案 3 :(得分:1)

编译器将使用最合适的大小,具体取决于常量的位置。如果它太大,您将收到编译器错误。

答案 4 :(得分:0)

每种类型(int,long,float,double)都具有与机器相关的最大值。

符合IEEE标准的浮点值和双精度值如果无法处理该值,将为您提供NaN或无穷大。