【发布时间】:2014-03-03 21:33:51
【问题描述】:
假设我有一个名为 T 的类型名称,它的大小始终为 >= T2 两者都是无符号的。如何检查T 类型的变量a 是否适合T2 而不会溢出,如果它不适合做一些其他操作?我试过检查它是否变成负数,但我不确定这是否是正确的检查方法,如下所示:
T a = ...;
T2 b = a;
if(b < 0) // didn't fit
else // ok, fit
【问题讨论】:
-
如果 T2 无符号 b 将始终 >= 0
-
Checking that a value of one integer type fits into another 的可能重复项(但这没有一个好的答案)。
-
使用库限制可以知道某个值是否在范围内:cplusplus.com/reference/climits