C語言的BYTE和char字符

來源:文萃谷 5.38K

在C語言中,字符(character)這個術語具有兩個層次上的含義:書寫源程序的字符和程序處理的字符以下是小編為大家搜索整理的C語言中的BYTE和char字符,希望能給大家帶來幫助!更多相關信息請關注相關欄目!

C語言的BYTE和char字符

例如,在下面的源程序中“""”之內的“你”、“好”、“,”、“C”、“!”、“”就屬於程序要處理的字符。

[cpp] view plaincopy

#include

int main(void)

{

printf("你好,C!");

return 0;

}

該源程序中的其他字符則屬於書寫源程序的字符,這其中也可能包含並沒有明顯顯示出來的字符,例如空格字符(space character)、水平製表符(horizontal tab)、垂直製表符(vertical tab)和換頁符(form feed)。

從某種意義上來説,編輯/編譯器是一種接受字符輸入,輸出可執行文件的軟件,由它產生可執行文件經過加載成為內存中的程序,這個程序通常也不可避免地要處理字符。

編輯/編譯器與它生產出的應用程序並不一定運行在同一個環境中,這就意味着兩者可能要各自處理不同的字符集合。

編輯/編譯器所要處理的字符就是書寫C語言源程序所用的字符,這種字符的集合叫源字符集(sourcecharacter set)。而應用程序要處理的字符所構成的集合叫執行字符集(execution character set)。

對於多數C語言學習者來説,由於編輯/編譯環境與應用程序運行環境是重合的,可能意識不到源字符集與執行字符集之間的區別。

源字符集(source character set)

源字符集中的字符就是編寫C語言源程序的字符,也就是C語言要求編輯/編譯器所運行的環境所提供的字符。這套字符由這幾部分組成:基本字符集(basic character set)、表示換行的字符(new-line character)和擴展字符(extended characters)。

基本字符集(basic character set)包括:

A B C D E F G H I J K L M

N O P Q R S T U V W X Y Z

a b c d e f g h i j k l m

n o p q r s t u v w x y z

0 1 2 3 4 5 6 7 8 9

! " # % & ( ) * + , - . / :

; < = > ? [ ] ^ _ { | } ~

 空格(space character)

 控制符:horizontal tab, vertical tab, form feed

一共是95個。這就是C語言對編輯/編譯器運行環境的最基本的要求,言外之意就是隻要編輯/編譯器所運行環境提供這95個字符就可以編寫C語言程序了。事實上C語言源程序也“主要”地由這95個字符組成。

此外,C語言還要求在編輯/編譯器運行的環境中,0~9這十個字符的`編號(編碼)必須是連續的。

遺憾的是,有些環境無法全部提供這95個字符。例如,據説有些國家的鍵盤上壓根就沒有“[”這個鍵。

由於存在這種情況,所以C語言也容許用所謂的三字符序列(trigraph)來表示那些環境不提供的字符。比如用“??<”表示“{”,用“??>”表示“}”。下面的代碼儘管看起來有些怪異,然而依然是合法的C程序。

[cpp] view plaincopy

#include

int main(void)

??<

printf("你好,C!");

return 0;

??>

編譯器也可以對基本字符集自行進行擴展,這就是所謂的擴展字符(extended characters)。前面代碼中的“你”、“好”就屬於擴展字符。這些擴展字符只能出現在標識符、字符常量、字符串字面量、頭名(header name)、註釋以及某些預處理單詞(preprocessing token that is never converted to a token)中。代碼的其他其他部分出現擴展字符則是一種未定義行為。

擴展字符的值是由具體的編譯器定義的。源程序可以使用的所有字符的集合叫做擴展字符集(extended character set)。

執行字符集

應用程序運行的環境中的字符集(the execution character set)也是一種擴展字符集(extended character set)。

其中也必須包括前面提到的源字符集中的那95個基本字符集

熱門標籤