C語言中有關於資料型別的幾個問題
阿新 • • 發佈:2018-12-13
1.整型資料轉換成字元型資料時資料過大;
int ch1 = 5566;
char ch2 = (char)ch1;
printf("%c \n", ch2 );
輸出亂碼�;char型別最大範圍到127,所以ch1最大隻能到127。
2.int ch1 = 0x128;
int *ch2 = (int*)ch1;
printf("%d \n", *ch2 );
與
int ch1 = 0x128;
int *ch2 = (int)ch1;
printf("%d \n", *ch2 );
結果是否相同? 實驗表明結果相同(int*)ch1 把ch1轉換成整型指標,其內容為0x128,第二個相當於將地址0x128直接給指標變數ch2。
3.int ch1 = 97;
char *ch2 = (char*)ch1;
printf("%c \n", *ch1 );
與
int ch1 = 97;
char *ch2 = ch1;
printf("%c \n", *ch1 );
結果是否相同?實驗表明結果相同,但 char *ch2 = ch1; 在一些軟體上回報錯,最好不要使用。
----上述兩個問題說明變數ch1的值是本質,而變數型別是其外在表現。
4.int a = 1 , b = 2 ;
{
int a = 9;
printf("%d %d ", a, b);
}
printf("%d ", a);
輸出結果如何?
9 2 1 複合語句內定義變數a只在符合語句內起作用,變數b不僅作用於外部還用於複合語句內部。
以上內容如有錯誤歡迎指正