一、短資料型別擴充套件為長資料型別
1、要擴充套件的短資料型別為有符號數的
進行符號擴充套件,即短資料型別的符號位填充到長資料型別的高位元組位(即比短資料型別多出的那一部分),保證擴充套件後的數值大小不變
如1:char x=10001001b;
short y=x; 則y
的值應為
11111111 10001001b;
2:char x=00001001b;
short y=x; 則y
的值應為
00000000 00001001b;
2、要擴充套件的短資料型別為無符號數的
進行零擴充套件,即用零來填充長資料型別的高位元組位
如1:unsigned char x=10001001b;
short y=x; 則y
的值應為
00000000 10001001b;
2:unsigned char x=00001001b;
short y=x; 則y
的值應為
00000000 00001001b;
二、長資料型別縮減為短資料型別
如果長資料型別的高位元組全為
1或全為
0,則會直接擷取低位元組賦給短資料型別;如果長資料型別的高位元組不全為
1或不全為
0,則轉會就會發生錯誤。
三、同一長度的資料型別中有符號數與無符號數的相互轉化
直接將記憶體中的資料賦給要轉化的型別,數值大小則會發生變化。另短型別擴充套件為長型別時,但短型別與長型別分屬有符號數與無符號數時,則先按規則一進行型別的擴充套件,再按本規則直接將記憶體中的數值原封不動的賦給對方。
附:有符號數的轉換 從
到方法char
short
符號位擴充套件
char
long
符號位擴充套件
char
unsigned char
最高位失去符號位意義,變為資料位
char
unsigned short
符號位擴充套件到
short;
然後從short
轉到unsigned short
char
unsigned long
符號位擴充套件到
long;
然後從long
轉到unsigned long
char
float
符號位擴充套件到
long;
然後從long
轉到float
char
double
符號位擴充套件到
long;
然後從long
轉到double
char
long double
符號位擴充套件到
long;
然後從long
轉到long double
short
char
保留低位位元組
short
long
符號位擴充套件
short
unsigned char
保留低位位元組
short
unsigned short
最高位失去符號位意義,變為資料位
short
unsigned long
符號位擴充套件到
long;
然後從long
轉到unsigned double
short
float
符號位擴充套件到
long;
然後從long
轉到float
short
double
符號位擴充套件到
long;
然後從long
轉到double
short
long double
符號位擴充套件到
long;
然後從long
轉到double
long
char
保留低位位元組
long
short
保留低位位元組
long
unsigned char
保留低位位元組
long
unsigned short
保留低位位元組
long
unsigned long
最高位失去符號位意義,變為資料位
long
float
使用單精度浮點數表示。可能丟失精度。
long
double
使用雙精度浮點數表示。可能丟失精度。
long
long double
使用雙精度浮點數表示。可能丟失精度。
無符號數的轉換 從
到方法unsigned char
char
最高位作為符號位
unsigned char
short
0擴充套件unsigned char
long
0擴充套件unsigned char
unsigned short
0擴充套件unsigned char
unsigned long
0擴充套件unsigned char
float
轉換到long; 再從 long 轉換到float
unsigned char
double
轉換到long; 再從 long 轉換到double
unsigned char
long double
轉換到long; 再從 long 轉換到double
unsigned short
char
保留低位位元組
unsigned short
short
最高位作為符號位
unsigned short
long
0擴充套件unsigned short
unsigned char
保留低位位元組
unsigned short
unsigned long
0擴充套件unsigned short
float
轉換到long; 再從 long 轉換到float
unsigned short
double
轉換到long; 再從 long 轉換到double
unsigned short
long double
轉換到long; 再從 long 轉換到double
unsigned long
char
保留低位位元組
unsigned long
short
保留低位位元組
unsigned long
long
最高位作為符號位
unsigned long
unsigned char
保留低位位元組
unsigned long
unsigned short
保留低位位元組
unsigned long
float
轉換到long; 再從 long 轉換到float
unsigned long
double
convert directly to double
unsigned long
long double
轉換到long; 再從 long 轉換到double
java環境下char型別轉為int型別
char型別轉換為int型別 char a 1 int b int a 此時,輸出b得到的是字元 1 的ascii編碼49,其他數字甚至是字母也一樣,按此類方法輸出的都只會是ascii編碼,當然如果不強制型別轉換,直接寫作 int b a 編譯也不會出錯,不過輸出的依舊是ascii編碼。如果想直接輸...
char陣列轉為字串
c語言 如何將無符號char陣列轉為字串 unsigned char src 6 如何轉為 char 12 int main char buffer 20 維數定義大些 for int i 0 i 6 i sprintf buffer i 2,x src i 格式化輸出到buffer,每個unsig...
String轉為Int 的異常錯誤
今天用c 寫了檢查磁碟空間的小程式在伺服器執行時,出現乙個string 轉為int的異常錯誤,後動執行程式,是完全沒有問題的,只有自動執行時,才會將此錯誤暴露出來 主要原因是string 轉換為int 時,不能直接用 convert.toint32 string 的方法,應該按以下步驟去處理 1.如...