c++ - 在 VC++ 中将 unsigned long 转换为 int?

标签 c++ visual-c++ types casting

我需要将一个“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/

相关文章:

c - 为什么给 ReadFileEx() 的回调没有收到正确的 OVERLAPPED 结构?

c++ - 如何使用缓存技术提高性能

java - Hadoop 类型转换

dart - 如何在Dart中为容器类指定数据类型

c++ - Qt Sql INSERT语句无效

c++ - 是否可以在 C++ 中查看命名空间的所有内容?

c++ - 即使在类销毁后如何访问类的成员变量?

visual-studio-2010 - Visual Studio崩溃会丢失所有新设置的断点

快速参数类型 () -> ()

C++ 如何从字符串流中取出值并将它们放入 vector 中,以便我可以单独访问它们?