為什麼 C 語言中可以將字元串字面量寫成"hello " "world" " ! "; 這種形式?

中間沒有任何操作符,直接就將幾個字元串連接在一起了,這為什麼是對的啊?


語法是這麼規定的。引號引起來的字元串,中間以空格分開,編譯器(預處理器)會自動幫你連成一個。

要用到一些需要折行的長字元串的時候,就特別有用。

比如一個SQL語句

sql = "select aaaa "

"from lalala "

"where xxx ";


規範要求支持。

這樣方便宏處理吧,我常用宏定義字元串,然後幾個宏合併成一個。

#define ROOTDIR "~/.sth/"

#define CFGFILE ROOTDIR "fname"


請看c專家編程。


很簡單,這樣你就能在文本編輯器中,換行書寫一個很長的字元串了嘛。否則,你的一個很長的字元串,寫出來會怎麼樣,你需要左右滾動你的水平滾動條,不方便。看起來也比較丑。


為什麼是對的?為什麼回字有四種寫法?

這還用回答嗎?試一下不就行了?

Compiler說你對的,就是對的。 Compiler 說你錯的,你就是錯的。

Compiler 之所以這麼設定,估計是考慮到了程序員的使用習慣,更人性化唄。

敲多行字元串,一向都是蠻累的。。


http://careferencemanual.com/,電子書網上可以找到。


這個問題有點...我認為語法問題沒有啥糾結的,就是這樣規定的,遵照即可,你可以自己查查 c 的標準或者 the c programming language 這本書,還有 googlewiki 會是你的好朋友.


這樣規定的實際作用在於:

可以將一行很長很長的字元串分成多行輸入

比如:

char * msg = "hi, "

"this is a loooooooooooooooooooooooooooooooooong "

"message";

----------

回答了才發現 「空氣」 已在 「劉中陽」 的評論中解釋了 :)


推薦閱讀:

TAG:編程 | C編程語言 | CC |