0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

C語(yǔ)言中的“三字母詞”是什么

Q4MP_gh_c472c21 ? 來(lái)源:CSDN ? 作者:CSDN ? 2021-09-26 14:46 ? 次閱讀

某軟件工程師接盤(pán)了前同事的項(xiàng)目,進(jìn)度一拖再拖,最后發(fā)現(xiàn)問(wèn)題出現(xiàn)在如下代碼:

// 注釋語(yǔ)句 ??/2a = b+c;

請(qǐng)注意代碼中的“??/”,就是這注釋隱藏的很深,讓項(xiàng)目一拖再拖。

“??/”會(huì)被編譯器當(dāng)作 /,變成C語(yǔ)言的換行符(多行代碼連接符)。于是這段代碼等同于// 注釋語(yǔ)句 a = b+c ;就會(huì)被注釋掉。

下面我們就是說(shuō)說(shuō)“??/”這種“三字母詞”的內(nèi)容。

什么是“三字母詞”

在ANSI標(biāo)準(zhǔn)中,定義了“三字母詞”,或者成為“三聯(lián)符序列”,英文為“trigraph sequences”。目的主要是為了在一些特定的字符集中,比如一些七位代碼集中,解決一些特定字符的輸入問(wèn)題。

也許是由于這些字符集我們基本上用不到,所以在大多數(shù)C語(yǔ)言的書(shū)籍中,我們都看不到對(duì)“三字母詞”的講解。這里資料來(lái)源于參考ANSI C99標(biāo)準(zhǔn)(即傳說(shuō)中的《American National Standards Institute for Programming Languages-C》 1999年,我們習(xí)慣簡(jiǎn)稱(chēng)為“C99”)。

“三字母詞”主要有9個(gè),分別為:三字母詞對(duì)應(yīng)的字符

??=#

??([

??)]

??《{

??》}

??//

??!|

??‘^

??-~

源代碼中的“三字母詞”,在編譯階段會(huì)被替換為“對(duì)應(yīng)的字符”。對(duì)于以“?”開(kāi)頭的字符序列,如果不能與上面9個(gè)匹配,編譯器將保持原狀;一旦匹配,編譯器就會(huì)做替換。

“三字母詞”例子

例子1:C99標(biāo)準(zhǔn)中給出的例子

printf(“Eh???/n”);

相當(dāng)于:

printf(“Eh/n”);

例子2:一個(gè)我們?nèi)菀追傅腻e(cuò)誤(摘自《Pointers On C》)

printf(“Delete file (are you really sure??):”);

運(yùn)行結(jié)果為(三字母詞“??)”編譯時(shí)替換為“]”):

Delete file (are you really sure]:

而不是我們想象中的:

Delete file (are you really sure??):

最后

由于編譯器的種類(lèi)各樣,對(duì)ANSI C的支持也不一樣,所以可能會(huì)有些C編譯器不處理“三字母詞”,會(huì)將它們當(dāng)做普通的字符串來(lái)處理。

責(zé)任編輯:haq

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • C語(yǔ)言
    +關(guān)注

    關(guān)注

    180

    文章

    7595

    瀏覽量

    135890
  • 代碼
    +關(guān)注

    關(guān)注

    30

    文章

    4723

    瀏覽量

    68240

原文標(biāo)題:C語(yǔ)言中的“三字母詞”坑了工程師

文章出處:【微信號(hào):gh_c472c2199c88,微信公眾號(hào):嵌入式微處理器】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    C語(yǔ)言中的socket編程基礎(chǔ)

    Socket編程簡(jiǎn)介 Socket是一種通信機(jī)制,允許程序之間進(jìn)行通信。在C語(yǔ)言中,socket編程是網(wǎng)絡(luò)編程的基礎(chǔ)。通過(guò)使用socket,程序可以發(fā)送和接收數(shù)據(jù),實(shí)現(xiàn)不同計(jì)算機(jī)之間的通信
    的頭像 發(fā)表于 11-01 16:51 ?208次閱讀

    C語(yǔ)言關(guān)鍵--typedef

    C語(yǔ)言關(guān)鍵使用方法學(xué)習(xí)指南!
    的頭像 發(fā)表于 10-07 12:44 ?153次閱讀

    快速掌握C語(yǔ)言關(guān)鍵

    C語(yǔ)言中的32個(gè)關(guān)鍵你知道多少個(gè)呢?根據(jù)關(guān)鍵的作用分為四類(lèi):數(shù)據(jù)類(lèi)型關(guān)鍵、控制語(yǔ)句關(guān)鍵
    的頭像 發(fā)表于 07-06 08:04 ?284次閱讀
    快速掌握<b class='flag-5'>C</b><b class='flag-5'>語(yǔ)言</b>關(guān)鍵<b class='flag-5'>字</b>

    C語(yǔ)言中的typedef的應(yīng)用

    C 語(yǔ)言提供了 typedef 關(guān)鍵,您可以使用它來(lái)為類(lèi)型取一個(gè)新的名字。下面的實(shí)例為單字節(jié)數(shù)字定義了一個(gè)術(shù)語(yǔ) BYTE。
    發(fā)表于 03-06 11:34 ?323次閱讀
    <b class='flag-5'>C</b><b class='flag-5'>語(yǔ)言中</b>的typedef的應(yīng)用

    如何解決C語(yǔ)言中的“訪問(wèn)權(quán)限沖突”異常?C語(yǔ)言引發(fā)異常原因分析

    如何解決C語(yǔ)言中的“訪問(wèn)權(quán)限沖突”異常?C語(yǔ)言引發(fā)異常原因分析? 在C語(yǔ)言中,訪問(wèn)權(quán)限沖突異常通
    的頭像 發(fā)表于 01-12 16:03 ?4747次閱讀

    C語(yǔ)言中結(jié)構(gòu)體能不能相加

    C語(yǔ)言中,結(jié)構(gòu)體能不能相加?
    的頭像 發(fā)表于 12-19 17:04 ?1193次閱讀
    <b class='flag-5'>C</b><b class='flag-5'>語(yǔ)言中</b>結(jié)構(gòu)體能不能相加

    c語(yǔ)言中邏輯真等價(jià)于什么

    C語(yǔ)言中,邏輯真等價(jià)于1。邏輯真可以理解為一個(gè)表達(dá)式、語(yǔ)句或條件的結(jié)果為真,即滿足條件。在計(jì)算機(jī)科學(xué)和編程中,邏輯真在控制流語(yǔ)句、循環(huán)和條件語(yǔ)句中具有重要的作用。 邏輯真等價(jià)于條件為真的情況。在C
    的頭像 發(fā)表于 11-30 14:10 ?1943次閱讀

    c語(yǔ)言中decimal的含義

    C語(yǔ)言中的“decimal”是一種數(shù)據(jù)類(lèi)型,用于表示十進(jìn)制數(shù)字。在C語(yǔ)言中,常用的數(shù)據(jù)類(lèi)型有整數(shù)類(lèi)型(int)、浮點(diǎn)類(lèi)型(float和double)、字符類(lèi)型(char)等,而deci
    的頭像 發(fā)表于 11-30 10:57 ?2230次閱讀

    C語(yǔ)言字母轉(zhuǎn)化為ASCII碼值

    C語(yǔ)言是一種非常強(qiáng)大和廣泛使用的編程語(yǔ)言,它具有豐富的功能和靈活性,可以用于各種不同的應(yīng)用程序。其中一個(gè)常見(jiàn)的用途是將字母轉(zhuǎn)化為ASCII碼值。在本文中,我將詳細(xì)介紹如何在
    的頭像 發(fā)表于 11-26 10:31 ?6076次閱讀

    c語(yǔ)言將小寫(xiě)字母轉(zhuǎn)換成大寫(xiě)字母

    C語(yǔ)言中,字符的大小寫(xiě)轉(zhuǎn)換是常見(jiàn)的操作,而具體實(shí)現(xiàn)該功能的方法有多種,本篇文章將詳盡、詳實(shí)、細(xì)致地介紹C語(yǔ)言中將小寫(xiě)字母轉(zhuǎn)換成大寫(xiě)
    的頭像 發(fā)表于 11-26 10:30 ?1w次閱讀

    c語(yǔ)言中數(shù)組怎么定義

    C語(yǔ)言中,數(shù)組是一種用來(lái)存儲(chǔ)相同類(lèi)型元素的數(shù)據(jù)結(jié)構(gòu)。它可以存儲(chǔ)多個(gè)元素,并通過(guò)一個(gè)共同的名稱(chēng)來(lái)引用這些元素。數(shù)組是一種很重要的數(shù)據(jù)結(jié)構(gòu),可以用于解決很多實(shí)際的問(wèn)題。 在C語(yǔ)言中,定義數(shù)
    的頭像 發(fā)表于 11-24 10:11 ?2802次閱讀

    \0在c語(yǔ)言中怎么用

    是由貝爾實(shí)驗(yàn)室的Dennis Ritchie為了開(kāi)發(fā)UNIX操作系統(tǒng)而設(shè)計(jì)的。它在20世紀(jì)70年代初首次出現(xiàn),并迅速流行起來(lái)。C語(yǔ)言以其簡(jiǎn)潔、高效、低級(jí)別的特性成為了廣泛使用的編程語(yǔ)言。 二、基本語(yǔ)法 注釋 在
    的頭像 發(fā)表于 11-24 09:59 ?2971次閱讀

    scanf在C語(yǔ)言中的作用

    scanf在C語(yǔ)言中的作用? scanf是C語(yǔ)言中的輸入函數(shù),用于從標(biāo)準(zhǔn)輸入設(shè)備(如鍵盤(pán))讀取數(shù)據(jù),并將其存儲(chǔ)到變量中。它是C
    的頭像 發(fā)表于 11-23 14:13 ?1249次閱讀

    c語(yǔ)言中順序結(jié)構(gòu)的基本流程

    的語(yǔ)句組成,這些語(yǔ)句用于完成特定的任務(wù)或操作。在C語(yǔ)言中,每個(gè)語(yǔ)句都以分號(hào)結(jié)束,多個(gè)語(yǔ)句可以用大括號(hào)括起來(lái)形成一個(gè)語(yǔ)句塊。在順序結(jié)構(gòu)中,每個(gè)語(yǔ)句都依次執(zhí)行,按照代碼的順序執(zhí)行,然后才會(huì)執(zhí)行下一條語(yǔ)句。 首先,我們
    的頭像 發(fā)表于 11-22 10:20 ?913次閱讀

    C語(yǔ)言中如何實(shí)現(xiàn)注釋

    C語(yǔ)言中,注釋是用來(lái)增加代碼可讀性和注釋過(guò)程和功能的文本。C語(yǔ)言中支持兩種類(lèi)型的注釋?zhuān)簡(jiǎn)涡凶⑨尯投嘈凶⑨尅?單行注釋以雙斜杠(//)開(kāi)始,直到該行結(jié)束。該注釋語(yǔ)句可以在代碼的任何位置
    的頭像 發(fā)表于 11-22 10:17 ?1200次閱讀