2017-05-29 45 views

回答

1

在您的系統中,字符'1'編碼爲49. C要求字符'1'...'9'處於那麼你的系統'9'的順序和連續性被編碼爲57.所以,'91'被編碼爲57,然後是49.在十六進制中,這個0x39後面跟着0x31。如果考慮使用big-endian字節排序的雙字節整數(可能是系統中的short [又名short int]),則它是0x3931或14641.因此,您的機器使用big-endian字節排序。

「91」是用一個值14641.在我的系統的int,int是大於charchar是-128到128,以便分配與該範圍之外的整數一個char,給出了一個編譯器警告。

現在,您的格式化打印調用使用「%d」格式說明符,該格式說明符用於常規長度整數。這意味着它會將整數在系統上的許多字節轉換爲十進制並輸出。但是,你傳遞char值,所以它打印這些價值觀爲整數,或91和14641.


你可能意味着更多的東西是這樣的:

char[] strVal1 = "1"; 
char[] strVal2 = "91"; 

printf("%s\n", strVal1); 
printf("%s", strVal2); 
+0

非常感謝你。 ! :) – smartnerd

相關問題