<pre id="bbfd9"><del id="bbfd9"><dfn id="bbfd9"></dfn></del></pre>

          <ruby id="bbfd9"></ruby><p id="bbfd9"><mark id="bbfd9"></mark></p>

          <p id="bbfd9"></p>

          <p id="bbfd9"><cite id="bbfd9"></cite></p>

            <th id="bbfd9"><form id="bbfd9"><dl id="bbfd9"></dl></form></th>

            <p id="bbfd9"><cite id="bbfd9"></cite></p><p id="bbfd9"></p>
            <p id="bbfd9"><cite id="bbfd9"><progress id="bbfd9"></progress></cite></p>
            C語言

            C語言中的BYTE和char字符

            時間:2025-02-19 05:26:21 C語言 我要投稿
            • 相關推薦

            C語言中的BYTE和char字符

              在C語言中,字符(character)這個術語具有兩個層次上的含義:書寫源程序的字符和程序處理的字符以下是小編為大家搜索整理的C語言中的BYTE和char字符,希望能給大家帶來幫助!更多精彩內容請持續關注我們應屆畢業生考試網!

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

              [cpp] view plaincopy

              #include

              int main(void)

              {

              printf("你好,C!\n");

              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!\n");

              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個基本字符集,0~9這十個字符的編碼也必須是連續的。

              特別需要注意的是,C語言并沒有要求執行環境中的基本字符集和編輯/編譯環境中的基本字符集具有相同的編碼方式,盡管這兩個基本字符集的“符”是相同的。

              執行環境中必須提供的字符還有alert,backspace,carriage return,new line以及一個各位都為0的字符(null character)。

              執行環境中程序可以處理的其他字符也被叫做擴展字符(extended characters),這些擴展字符與基本字符集以及alert,backspace,carriage return,new line和null character共同構成了執行環境中的擴展字符集(extended character set),或稱之為執行字符集(the execution character set)。

              對于執行環境來說,擴展字符(extended characters)同樣是由編譯器自行定義的。

              C語言中的Byte

              C語言中的Byte,如同int等類型類似,同樣不是一個確定長度的位組。C語言只是要求Byte能放得下執行環境中和編輯/編譯環境中基本字符集的編碼。這樣在某些編譯器中C語言中的Byte是9位就不難理解了,這并不違背C語言的基本定義。

              同樣的道理,如果在編輯/編譯環境中,基本字符集的編碼是8位,而在運行環境中基本字符集的編碼是16位的話,那么Byte的大小顯然就必須至少為16位。

              由此可見,在C語境中的Byte并非是平時普遍認為的octet(8位組)。

              C語言中的char數據類型

              C語言中的char數據類型是一種整數類型(integer type),它的大小被定義為1個Byte。亦即

              sizeof (char) ≡ 1

              若需要知道某個具體編譯器的Byte究竟是多少位,可以查看編譯器提供的limits.h。其中定義的符號常量CHAR_BIT就是char類型的位數,也就是Byte的位數。

              補充:

              C標準的矛盾?

              "addressable unit of data large enough to hold any member of the basic character set of the execution environment" (clause 3.6 of the C standard)

              可是在5.2.1-3中

              The representation of each member of the source and execution basic character sets shall fit in a byte.

            【C語言中的BYTE和char字符】相關文章:

            C語言的BYTE和char字符01-26

            C語言中的字符(char)01-04

            C語言中char*和char[]用法區別03-17

            C語言中的字符07-18

            c語言中char的用法簡介04-04

            C語言中壓縮字符串的算法07-27

            C語言字符數組和字符串05-05

            C語言中壓縮字符串的簡單算法02-03

            C語言中返回字符串函數的實現方法03-22

                    <pre id="bbfd9"><del id="bbfd9"><dfn id="bbfd9"></dfn></del></pre>

                    <ruby id="bbfd9"></ruby><p id="bbfd9"><mark id="bbfd9"></mark></p>

                    <p id="bbfd9"></p>

                    <p id="bbfd9"><cite id="bbfd9"></cite></p>

                      <th id="bbfd9"><form id="bbfd9"><dl id="bbfd9"></dl></form></th>

                      <p id="bbfd9"><cite id="bbfd9"></cite></p><p id="bbfd9"></p>
                      <p id="bbfd9"><cite id="bbfd9"><progress id="bbfd9"></progress></cite></p>
                      飘沙影院