繁体   English   中英

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

[英]Cast unsigned long to int in VC++?

我需要将“ unsigned long”类型参数传递给仅需要int的函数。
我找不到在MSDN上投射它的安全方法。 有人可以分享安全功能来执行此操作吗?

没有将“ unsigned long int值转换为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) ...

当然,如果值不合适,您必须决定要怎么做。

没有安全的方法,因为unsigned long包含无法用int表示的值。

但是,如果您确定转换是安全的,则可以编写(int)argumentstatic_cast<int>(argument)或直接传递参数,该语言将自动执行转换。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM