共用方式為


從不帶正負號整數型別的轉換

當不帶正負號的整數轉換成整數或浮點類型時,如果原始值在結果類型中可表示,則值不會變更。

當編譯程式將不帶正負號的整數轉換成大小較大的整數時,此值會是零擴充的。 轉換成大小較小的整數時,會截斷高階位。 結果會使用結果類型來解譯,如下列範例所示:

unsigned k = 65533;
short j;

j = k;
printf_s( "%hd\n", j );   // Prints -3

當編譯程式將不帶正負號的整數轉換成浮點類型時,如果原始值無法完全在結果類型中表示,則結果會是下一個較高或較低的可表示值。

如需整數和浮點類型大小的相關信息,請參閱 基本類型的 儲存。

Microsoft 特定的

在Microsoft編譯程式中, unsigned (或 unsigned int) 和 unsigned long 是相異但相等的類型。 unsigned int 值的轉換與 unsigned long 的轉換使用相同的方式進行。

END Microsoft 特定的

下表摘要說明從不帶正負號整數類資料類型進行轉換。

從不帶正負號整數型別轉換的數據表

方法
unsigned char char 保留位元模式,高序位位元會變成正負號位元
unsigned char short 零擴充
unsigned char long 零擴充
unsigned char long long 零擴充
unsigned char unsigned short 零擴充
unsigned char unsigned long 零擴充
unsigned char unsigned long long 零擴充
unsigned char float 完全轉換成 float
unsigned char double 完全轉換成 double
unsigned char long double 完全轉換成 long double
unsigned short char 保留低序位位元組
unsigned short short 保留位元模式,高序位位元會變成正負號位元
unsigned short long 零擴充
unsigned short long long 零擴充
unsigned short unsigned char 保留低序位位元組
unsigned short unsigned long 零擴充
unsigned short unsigned long long 零擴充
unsigned short float 完全轉換成 float
unsigned short double 完全轉換成 double
unsigned short long double 完全轉換成 long double
unsigned long char 保留低序位位元組
unsigned long short 保留低序位字組
unsigned long long 保留位元模式,高序位位元會變成正負號位元
unsigned long long long 零擴充
unsigned long unsigned char 保留低序位位元組
unsigned long unsigned short 保留低序位字組
unsigned long unsigned long long 零擴充
unsigned long float 轉換為最接近的可表示 float
unsigned long double 完全轉換成 double
unsigned long long double 完全轉換成 long double
unsigned long long char 保留低序位位元組
unsigned long long short 保留低序位字組
unsigned long long long 保留低序 dword
unsigned long long long long 保留位元模式,高序位位元會變成正負號位元
unsigned long long unsigned char 保留低序位位元組
unsigned long long unsigned short 保留低序位字組
unsigned long long unsigned long 保留低序 dword
unsigned long long float 轉換為最接近的可表示 float
unsigned long long double 轉換為最接近的可表示 double
unsigned long long long double 轉換為最接近的可表示 long double

另請參閱

指派轉換