03.06 字符型數據(char)詳細分析

C語言中的字符型數據(char型)表示:字母、符號和一些動作(如:回車)。它佔用存儲單元1個字節也就是8位,如果把它看成是有符號型char類數據,它的數據範圍是(-128—127),如果看成無符號型char類數據,那他的數據範圍是(0-255);下面我們對char類數據做個更加全面的瞭解。

1.1 字符數據聲明定義必須使用單引號,比如下面

char num='a';

解釋:把字符常量a賦給變量num;

char sum='\\a';

解釋:把字符常量\\a賦予變量sum;\\a表示計算機響鈴一次;

1.2 我們知道ASCII標準把我們常用的字符都進行了標準化,每一個字符對應一個整數值,當然這個整數值分別可以使用八進制、十六進制或十進制表示。比如下面

char dur='A';等同於int dur=0101;等同於int dur=0x41;等同於char dur=65;

備註:0101是整型數八進制的書寫,0x41是整型數十六進制的書寫。因為上面四種最後打印的都是字符A,所以我們可以說她們相同的表示,但是我們按照標準的規範聲明是“char dur ='A';”這一點大家要注意。

同時上面四種聲明存儲的形式不一樣,但最後輸出是一樣的,說明數據的打印輸出和格式符號%d、%c有關,而與是十進制、十六進制或字符型存儲無關。

2、char型數據的輸出和什麼有關(printf)

2.1字符型數據的輸出格式符是%c;如果我們想把字符所對應的八進制或十六進制直接輸出,怎麼辦?我們可以把格式符換成%o或%x(%#o或%#x)最後輸出是一樣的,說明數據的打印輸出和格式符號%d、%c有關,而與是十進制、十六進制或字符型存儲無關。

2、char型數據的輸出(printf)

2.1字符型數據的輸出格式符是%c;如果我們想把字符所對應的八進制或十六進制直接輸出,怎麼辦?為此C語言做了一個“轉義序列符”,我們可以理解字符使用的快捷鍵。

<code>#include<stdio.h>
int main(void)
{
printf("gramps sez,\\''a \\\\ is a backslash.\\''\\n");
getchar( );
return 0;
}

這個程序的輸出結果是:gramps sez,"a\\ is a backslash."/<stdio.h>/<code>

下面我們來分析這條程序:printf("gramps sez,\\''a \\\\ is a backslash.\\''\\n");

它使用的轉義序列符有:\\''和\\\\(\\''輸出雙引號,而\\\\輸出符號\\)所以從這條程序可以看出,需要使用這些符號,通過轉義序列符可以直接輸出,很方便,如果不這樣,那隻喲通過聲明變量,把字符賦給變量然後再輸出,通過格式符%c;這樣肯定麻煩的多。

總之來說字符數據除了有ASCII規定的還有C語言的轉義序列符,根據需要選擇合適的書寫。


字符型數據(char)詳細分析

ASCII


字符型數據(char)詳細分析


分享到:


相關文章: