某工程師接盤了前同事的項目,進度一拖再拖。最后發(fā)現(xiàn)問題出現(xiàn)在如下代碼:
請注意代碼中的“??/”,就是這注釋隱藏的很深,讓項目一拖再拖。
"??/"會被編譯器當作 /,變成C語言的換行符(多行代碼連接符)。
于是這段代碼等同于// 注釋語句 a = b+c ;就會被注釋掉。
下面我們就是說說“??/”這種“三字母詞”的內(nèi)容。
什么是“三字母詞”
在ANSI標準中,定義了“三字母詞”,或者成為“三聯(lián)符序列”,英文為"trigraph sequences"。目的主要是為了在一些特定的字符集中,比如一些七位代碼集中,解決一些特定字符的輸入問題。
也許是由于這些字符集我們基本上用不到,所以在大多數(shù)C語言的書籍中,我們都看不到對“三字母詞”的講解。這里資料來源于參考ANSI C99標準(即傳說中的《American National Standards Institute for Programming Languages-C》 1999年,我們習慣簡稱為“C99”)。“三字母詞”主要有9個,分別為:
源代碼中的“三字母詞”,在編譯階段會被替換為“對應的字符”。對于以“?”開頭的字符序列,如果不能與上面9個匹配,編譯器將保持原狀;一旦匹配,編譯器就會做替換。“三字母詞”例子例子1:C99標準中給出的例子
printf("Eh???/n");
相當于:
printf("Eh/n");
例子2:一個我們?nèi)菀追傅腻e誤(摘自《Pointers On C》)
printf("Delete file (are you really sure??):");
運行結果為(三字母詞“??)”編譯時替換為“]”):
Delete file (are you really sure]:
而不是我們想象中的:
Delete file (are you really sure??):
最后
由于編譯器的種類各樣,對ANSI C的支持也不一樣,所以可能會有些C語言編譯器不處理“三字母詞”,會將它們當做普通的字符串來處理。
聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內(nèi)容侵權或者其他違規(guī)問題,請聯(lián)系本站處理。
舉報投訴
原文標題:接盤前同事項目,被字符“??/ ”坑慘
文章出處:【微信號:c-stm32,微信公眾號:STM32嵌入式開發(fā)】歡迎添加關注!文章轉(zhuǎn)載請注明出處。
相關推薦
`場效應三極管的型號命名方法<br/> 現(xiàn)行有兩種命名方法。第一種命名方法與雙極型三極管相同,第三位字母J代表結型場效應管,O代表絕緣柵場效應管。第二位
發(fā)表于 04-25 15:42
`從型號區(qū)分 場效應管型號如IRF......... 三極管型號如國產(chǎn):3DD,國外:2S......... 場效應管有兩種命名方法。第一種命名方法與雙極型三極管,第三位字母J代表結型
發(fā)表于 07-11 11:41
Proteus 8*8數(shù)碼顯示管編譯26位字母和0-9數(shù)字代碼const int row1=2;const int row2=3;const int row3=4;const int row4=5
發(fā)表于 10-30 17:31
:“吃飯啦”;生僻字和零聲母字應盡量避免,如“語音識別”中“語音”兩個字均為零聲母字;命令詞中的字
發(fā)表于 10-25 15:09
變壓器的類別、結構、特征和用途,后部分代表產(chǎn)品的額定容量和高壓繞組的額定電壓等級,其型號中的字母所代表的含義如下: 第一位字母表示變壓器的類別,O表示降壓自耦,D表示單相;S表示三相。 第二位
發(fā)表于 05-16 15:46
M0518用串口接收數(shù)據(jù)時出問題。發(fā)送端共發(fā)送3個字節(jié),固定第一字節(jié)數(shù)據(jù)會改變,其它兩個字節(jié)的數(shù)據(jù)一直為0,可是接收端收到的數(shù)據(jù),第一個字節(jié)是正常的,后面的第二、三字節(jié)卻是亂的。本應為0的,但是像
發(fā)表于 08-21 07:13
MCS51三字節(jié)無符號除法程序(ASM)
;三字節(jié)無符號除法程序(R2R3R4/R7)=(R2)R3R4 余數(shù)R7;入口 :R2,R3,R4,R7;占用資源:ACC,B,F0;堆
發(fā)表于 01-16 11:54
?1222次閱讀
三字節(jié)二進制無符號數(shù)除以單字節(jié)二進制數(shù)
入口條件:被除數(shù)在R3、R4、R5中,除數(shù)在R7中。出口信息:OV=0 時,雙字節(jié)商在R4、R5中,OV=1
發(fā)表于 01-19 22:47
?1800次閱讀
場效應三極管的型號命名方法及參數(shù)
現(xiàn)行有兩種命名方法。第一種命名方法與雙極型三極管相同,第三位字母J代表結型場效
發(fā)表于 11-09 15:30
?2443次閱讀
場效應三極管的型號
場效應三極管的型號, 現(xiàn)行有兩種命名方法。其一是與雙極型三極管相同,第三位字母J代表結型場效應管,O代表絕緣柵場效
發(fā)表于 11-09 15:57
?4764次閱讀
說起對工業(yè)機器人的性能要求,無非就是“快、準、狠”三字。其實這也就是對機器人關節(jié)伺服電機的要求,今天我們就來拆解一下這三字背后的含義。
發(fā)表于 10-24 15:17
?3918次閱讀
本文檔的主要內(nèi)容詳細介紹的是LCD1602字母流動顯示C語言程序函數(shù)資料免費下載。
發(fā)表于 12-24 08:00
?12次下載
—穿墻式;Z—支柱式;M—母線式;D—單匝貫穿式;V—結構倒置式;J—零序接地檢測用;W—抗污穢;R—繞組裸露式 第三字母:Z—環(huán)氧樹脂澆注式;C—瓷絕緣;Q—氣體絕緣介質(zhì);W—與微機保護專用 第四字母:B—帶保護級;C—差動保護;D—D級;Q—加強型;J—加強型ZG 第
發(fā)表于 07-12 14:57
?1.3w次閱讀
編譯器當作 /,變成C語言的換行符(多行代碼連接符)。于是這段代碼等同于// 注釋語句 a = b+c ;就會被注釋掉。 下面我們就是說說“??/”這種“三字母詞”的內(nèi)容。 什么是“三字母詞
發(fā)表于 09-26 14:46
?2615次閱讀
場效應三極管管現(xiàn)行有兩種命名方法。第一種命名方法,型號的第三位字母J代表結型場效應管,O代表絕緣柵場效應管。第二位字母代表材料,D是P型硅,反型層是N溝道;C是N型硅P溝道。例如,3D
發(fā)表于 04-23 10:40
?2207次閱讀
評論