《C語言核心技術》的第一章主要討論了討論C語言的基本特性和程式結構的主要元素。本節介紹的是雙字元組和三字元組。
基本介紹
- 中文名:三字元組
- 外文名:trigraph
- 定義:程式設計語言中3個字元的序列
三字元組(trigraph)與雙字元組(Digraph)是程式設計語言(如C語言)中3個或者2個字元的序列,在編譯器預掃描源程式時被替換為單個字元。以解決某些鍵盤不能輸入某些編程必須的字元問題。
如果你認為上述的解釋比較抽象的話,為了更詳細深入地理解問題,下面我們舉一個雙字元組的例子加以說明。
表1:雙字元組(只有6個)
雙字元組 | 對應字元 |
<: | [ |
:> | ] |
<% | { |
%> | } |
%: | # |
%:%: | ## |
注意:如果上述表1左欄所示的任何雙字元出現在字元常量或字元串字面值中,則不會被解釋成雙字元組;除此之外,它們一律被解釋成雙字元組,作用和等價的單一字元記號完全一樣。
比如,有一段程式代碼片段如下所示(無雙字元組程式版本):
int arr[ ] = { 10, 20, 30 };
printf( "The second array element is <%d>.\n", arr[1] );
如果某個鍵盤不支持表1右欄所示的單字元( 如[、]、{等字元 ),可以用這個單字元對應的雙字元組輸入來代替,輸入程式片段如下(有雙字元組程式版本):
int arr<::> = <% 10, 20, 30 %>;
printf( "The second array element is <%d>.\n", arr<:1:> );
在編譯的第一個階段,編譯器的預處理器會將上述(出現在字元常量或字元串字面值外)的雙字元組取代成單一的對等字元,這樣這個程式片段就等價於第一個無雙字元組程式版本,則這兩個版本的程式片段的輸出應該是一樣的,其輸出都是:
The second array element is <20>.