[英]How to convert int32_t to int in c? [closed]
如何將 int32_t 轉換為 int?
例如:
int func(int32_t var) {
int x = (..?) var;
return x;
}
簡單的:
int func( int32_t var ) {
return var;
}
完畢。
當int
范圍與int32_t
一樣寬或更寬時,只需分配。
int func(int32_t var) {
int x = var;
return x;
}
當int
范圍比int32_t
窄時,強制類型轉換將消除有關縮小的警告。
int func(int32_t var) {
int x = (int) var;
return x;
}
在第二種情況下,不清楚 OP 想要什么var
應該超過int
范圍。 也許限制?
#include <limits.h>
#include <stdint.h>
int func(int32_t var) {
#if INT32_MAX > INT_MAX || INT32_MIN < INT_MIN
if (var > INT_MAX) {
return INT_MAX;
}
if (var < INT_MIN) {
return INT_MIN;
}
return (int) var;
#else
return var;
#endif
}
對於不能由int
表示的值,您沒有指定您想要的行為。
如果您對實現定義的行為感到滿意,並且在這種情況下程序從實現定義的信號中崩潰,那么您所需要的就是
int x = var;
否則,您將需要適當地處理大於 INT_MIN 的負值和大於INT_MIN
的INT_MAX
。 這兩個常量在limits.h
中定義。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.