亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > C > 正文

C語言中的BYTE和char深入解析

2020-01-26 15:47:00
字體:
來源:轉載
供稿:網友

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

復制代碼 代碼如下:

#include <stdio.h>
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程序。

復制代碼 代碼如下:

#include<stdio.h>
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.

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲综合国产精品| 欧美在线视频导航| 欧美性xxxxx| 精品动漫一区二区| 欧洲亚洲妇女av| 欧美另类69精品久久久久9999| 国产精品久久色| 欧美日韩国内自拍| 国产丝袜一区二区三区| 免费91麻豆精品国产自产在线观看| 91精品啪在线观看麻豆免费| 海角国产乱辈乱精品视频| 第一福利永久视频精品| 国产精品偷伦免费视频观看的| 精品久久久一区二区| 视频在线一区二区| 日韩精品极品在线观看播放免费视频| 久热在线中文字幕色999舞| 亚洲999一在线观看www| 欧美亚洲成人免费| 日韩av免费在线| 午夜精品久久久久久久白皮肤| 91久久夜色精品国产网站| 中文字幕久热精品在线视频| 欧美日韩精品在线观看| 欧美成人免费一级人片100| 国产精品亚洲一区二区三区| 久久天天躁日日躁| 日韩欧美在线免费| 久久99国产精品久久久久久久久| 日韩精品在线观看视频| 久久不射热爱视频精品| 国产精品www网站| 欧美日韩免费观看中文| 国产第一区电影| 欧美国产视频一区二区| 久久精品国产视频| 亚洲成人在线视频播放| 欧美一乱一性一交一视频| 亚洲欧美日本另类| 九九久久精品一区| 欧美日本在线视频中文字字幕| 日本久久久久久久久| 综合欧美国产视频二区| 欧美性猛交xxxx乱大交极品| 美日韩精品视频免费看| 欧美—级a级欧美特级ar全黄| 亚洲最大福利视频网| 91在线免费看网站| 亚洲欧美日韩国产成人| 欧美一级bbbbb性bbbb喷潮片| 国产精品一区二区三区久久久| 亚洲综合色激情五月| 日本亚洲欧美成人| 国产精品自拍偷拍视频| 精品久久久久久久久久久久久久| 亚洲综合日韩中文字幕v在线| 欧美激情视频网站| 2018日韩中文字幕| 日韩av一区二区在线| 一区二区成人av| 国产精品色婷婷视频| 欧美性少妇18aaaa视频| 日韩在线视频播放| 亚洲免费高清视频| 欧美性xxxxx极品| 亚洲偷熟乱区亚洲香蕉av| 国产va免费精品高清在线| 久久亚洲私人国产精品va| 92看片淫黄大片看国产片| 色哟哟入口国产精品| 在线观看久久久久久| 日韩av片免费在线观看| 中文字幕亚洲欧美一区二区三区| 狠狠色噜噜狠狠狠狠97| 国产丝袜视频一区| 欧美性猛交xxxxx免费看| 中文字幕精品www乱入免费视频| 久久亚洲国产精品| 欧美国产极速在线| 亚洲视频在线观看视频| 欧美老少配视频| 91在线观看免费观看| 亚洲美腿欧美激情另类| 亚洲在线免费观看| 这里只有精品丝袜| 免费不卡在线观看av| 亚洲福利在线播放| 欧美黄色片在线观看| 黑人巨大精品欧美一区二区| 日韩av影视综合网| 欧美国产亚洲视频| 欧美激情免费看| 欧美精品www在线观看| 亚洲跨种族黑人xxx| 欧美日韩亚洲视频一区| 久久综合国产精品台湾中文娱乐网| 亚洲经典中文字幕| 欧美日韩亚洲精品一区二区三区| 97激碰免费视频| 欧美成人精品三级在线观看| 国内外成人免费激情在线视频网站| 欧美在线视频观看| 亚洲国产精久久久久久久| 国产精品成人av在线| 欧美一级黄色网| 国产欧美精品日韩| 精品久久久久久久久久ntr影视| 欧美一区在线直播| 亚洲精品日韩激情在线电影| 久久久久成人网| 日韩一区二区久久久| 国产精品中文字幕久久久| 视频直播国产精品| 久热99视频在线观看| 国产日韩欧美日韩| 久久久久久久国产精品视频| 九九热精品在线| 自拍偷拍亚洲在线| 欧美精品免费在线| 国产精品第1页| 色爱av美腿丝袜综合粉嫩av| 久久精品视频在线播放| 精品亚洲一区二区三区| 欧美日韩激情视频| 热久久视久久精品18亚洲精品| 久久免费高清视频| 国产亚洲欧美日韩一区二区| 日本国产精品视频| 日av在线播放中文不卡| 欧美亚洲第一区| 亚洲欧美日韩直播| 久久中文字幕一区| 国产成人在线亚洲欧美| 狠狠躁夜夜躁人人爽超碰91| 国内精品在线一区| 日韩精品极品视频免费观看| 亚洲精品v天堂中文字幕| 国产日韩欧美一二三区| 国内精品久久久| 亚洲丝袜在线视频| 高清亚洲成在人网站天堂| 国产精品美乳在线观看| 九九热精品在线| 亚洲a中文字幕| 国产精品第一第二| 欧美性极品少妇精品网站| 国产精品第一视频| 日韩欧美中文字幕在线播放| 国产成人精品久久二区二区| 国模精品视频一区二区| 成人av.网址在线网站| 国产精品入口免费视| 久久久精品2019中文字幕神马| 国产一区二区在线免费视频| 国产精品美女午夜av| 久久欧美在线电影| 97精品视频在线播放| 亚洲视频视频在线| 亚洲国产婷婷香蕉久久久久久| 欧美午夜视频一区二区| 久久视频在线视频| 日韩欧美国产激情| 91亚洲国产成人久久精品网站|