intのみを取る関数に「unsigned long」型の引数を渡す必要があります。
MSDN でキャストする安全な方法が見つかりませんでした。誰かがこれを行うための安全な機能を共有してもらえますか?
6139 次
2 に答える
4
はで表現できない値を保持できるため、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) ...
もちろん、値が合わない場合はどうするかを決める必要があります。
于 2013-08-08T18:46:11.163 に答える
1
unsigned long
で表現できない値が含まれているため、安全な方法はありませんint
。
ただし、変換が安全であると確信している場合は、引数をそのまま記述または単に渡すことができ(int)argument
ますstatic_cast<int>(argument)
。言語は自動的に変換を実行します。
于 2013-08-08T18:46:47.853 に答える