簡體   English   中英

如何在 c 中將 int32_t 轉換為 int? [關閉]

[英]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_MININT_MAX 這兩個常量在limits.h中定義。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM