1. 三字母詞
在C語言中有一種三字母詞的說法,trigraph sequences,目前為止有九種三字母詞,如下
??= # ??) ] ??! |
??( [ ??' ^ ??> }??/ / ??< { ??- ~
三字母詞出現(xiàn)的原因是,為了避免以前的老式鍵盤中沒有上面的九種字符
這里還需要注意的是,在用gcc編譯時(shí)可能會(huì)出現(xiàn)如下錯(cuò)誤
在編譯時(shí)如果不加-trigraphs會(huì)出現(xiàn)如下警告warning: trigraph ??/ ignored, use -trigraphs to enable我們需要在編譯時(shí)加上-trigraphs選項(xiàng),而且需要加在最前面。cc -trigraphs -o test test.c
這里我們需要注意的一點(diǎn)就是,當(dāng)我們看到兩個(gè)問號(hào)同時(shí)出現(xiàn)時(shí),就留意一下三字母詞,避免引起不必要的麻煩,防止出現(xiàn)三字母詞,即想打印出兩個(gè)問號(hào)時(shí),就使用/?
2. 轉(zhuǎn)義字符
我們?cè)诰帉慍程序的時(shí)候,會(huì)想要打印出某些符號(hào),但是因?yàn)檫@些符號(hào)是有特殊含義的,所以經(jīng)常不能如愿,接下來就是轉(zhuǎn)義字符了
轉(zhuǎn)義字符(escape sequence)由一個(gè)反斜杠/加上一個(gè)或多個(gè)其他字符組成。
/?在書寫連續(xù)多個(gè)問號(hào)時(shí)使用,防止它們被解釋為三字母詞。
/"用于表示一個(gè)字符串常量內(nèi)部的雙引號(hào)。
/'用于表示字符常量‘。
//用于表示一個(gè)反斜杠,防止它被解釋為一個(gè)轉(zhuǎn)義序列符。
/a 警告字符。 /b 退格鍵 /f 進(jìn)紙字符 /n 換行符 /r 回車符 /t 水平制表符 /v 水平制表符 /ddd ddd表示1~3個(gè)八進(jìn)制數(shù)字,表示八進(jìn)制所對(duì)應(yīng)的十進(jìn)制數(shù)對(duì)應(yīng)ASCII對(duì)應(yīng)的字符。 /xddd 與上例類似,只是八進(jìn)制數(shù)換成了十六進(jìn)制數(shù) 3.小例題
這里我們來看一道題目
len = strlen("c:/code/test/ten.c");
這個(gè)時(shí)候len的結(jié)果是15,因?yàn)?為當(dāng)成是一個(gè)轉(zhuǎn)義字符的標(biāo)識(shí),所以這里/c和/t被分別當(dāng)成是一個(gè)字符
變式1:len = strlen("c://code//test//ten.c");
結(jié)果是18,這里//被當(dāng)成是一個(gè)字符,表示一個(gè)/,而c和t就被當(dāng)成是一個(gè)字符
變式2:len = strlen("c://code//test//ten.c/123");
結(jié)果是19,因?yàn)楹竺娴?123,是上文中轉(zhuǎn)義字符的一種,表示123八進(jìn)制所對(duì)應(yīng)的十進(jìn)制數(shù)對(duì)應(yīng)的asall碼多對(duì)應(yīng)的字符
變式3:len = strlen("c://code//test//ten.c/023");
這里的結(jié)果是還是19,題目沒有把/0作為結(jié)束的標(biāo)識(shí)
變式4:len = strlen("c://code//test//0ten.c/023");
這里的結(jié)果是12,因?yàn)?0在這里被當(dāng)成是結(jié)束的字符串標(biāo)識(shí),并且不被strlen統(tǒng)計(jì)成一個(gè)字符
新聞熱點(diǎn)
疑難解答
圖片精選
網(wǎng)友關(guān)注