我需要将一个“unsigned long”类型的参数传递给一个只接受 int 的函数。
我没有找到在 MSDN 上转换它的安全方法。有人可以分享一个安全的功能来做到这一点吗?
最佳答案
没有将 unsigned long
值转换为 int
的“安全”方法,因为 unsigned long
可以保存不能被用 int
表示。
你可以这样做:
unsigned long arg = some_value;
if (arg <= INT_MAX) {
func(arg); // the value will be implicitly converted
}
else {
// do something else
}
请注意,在这种情况下没有必要检查INT_MIN
。如果参数是 long
而不是 unsigned long
,您需要检查下限和上限:
if (arg >= INT_MIN && arg <= INT_MAX) ...
当然,如果值不合适,您必须决定要做什么。
关于c++ - 在 VC++ 中将 unsigned long 转换为 int?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18133648/