C語言原始碼字元集和執行字元集

2020-07-16 10:04:21
編譯器轉換程式原始碼時,所處的環境稱為翻譯環境(translation environment);編譯後程式執行時,所處的環境稱為執行環境(execution environment)。

對C語言來說,翻譯環境和執行環境是不同的。因此,C語言定義了兩個字元集(character set):原始碼字元集與執行字元集。
  • 原始碼字元集(source character set)是用於組成C原始碼的字元集合;
  • 而執行字元集(execution character set)是可以被執行程式解釋的字元集合。

在許多C語言的實現版本中,這兩個字元集是一樣的。如果不一樣,則編譯器會把原始碼中的字元常數和字串字面量轉換成執行字元集中的對應元素。

這兩種字元集都包含基本字元集(basic character set)和擴充套件字元(extended character),C語言沒有指定擴充套件字元,這通常由本地語言所決定。擴充套件字元加上基本字元集,組成擴充套件字元集(extended character set)。

基本原始碼字元集和基本執行字元集都包含了下面的字元型別:
1) 拉丁字母

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

2) 十進位制阿拉伯數位

0 1 2 3 4 5 6 7 8 9

3) 下面29個符號

! " # % & ' () * + , -. / :; < = > ? [ ] ^ _ { | } ~

4) 5種空白符

空格、水平製表符、垂直製表符、換行、換頁

5) 基本執行字元集還包括四個不可列印的字元:

null字元(用做字串終止符)、警報(alert)、退格(backspace)、回車(carriage return)

為了在字母和字串中表示這些字元,輸入反斜槓加對應的跳脫序列(escape sequence)即可,例如,表示 null 字元(空字元),a表示警報,b表示退格,而r表示回車。

不同的C實現版本中,字元實際對應的數值(字元碼)可能不同。C語言本身僅規定了以下規則:
  • 基本字元集中的每個字元必須用一個位元組(byte)表示。
  • 空字元是一個位元組,其所有的位(bit)都是0。
  • 0 之後的每個十進位制數位,編碼都要依次比前者大 1。