[語法] string literal 連接在一起

看板C_and_CPP (C/C++)作者 (...)時間16年前 (2009/12/07 17:45), 編輯推噓11(11015)
留言26則, 9人參與, 最新討論串1/1
我想問的是像這樣的東西: char s[10] = "aaa" "bbb" "" "ccc"; printf("%s", s); 這是合理的語法嗎? 為什麼字串們會自動銜接起來呢? -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 218.211.0.80

12/07 17:50, , 1F
string literal concatenation
12/07 17:50, 1F

12/07 18:03, , 2F
空白隔開的字串會自動合起來,define常用到
12/07 18:03, 2F

12/07 18:07, , 3F
謝謝樓上幾位 :)
12/07 18:07, 3F

12/07 18:08, , 4F
這就和int a[3]; a[2] = 1;也可以寫成 2[a] = 1;一樣..
12/07 18:08, 4F

12/07 18:10, , 5F
《你所不知道的C/C++冷知識》民明書坊
12/07 18:10, 5F

12/07 18:10, , 6F
樓上講的也是 string literal concatenation?
12/07 18:10, 6F

12/07 18:11, , 8F
第一個例子,如果不是因為兩個""會合併,就反而會印出#
12/07 18:11, 8F

12/07 18:12, , 9F
應該說,如果你這樣寫 printf("token#n") 就會有問題
12/07 18:12, 9F

12/07 18:15, , 10F
謝謝樓上給的例子!
12/07 18:15, 10F

12/07 18:18, , 11F
話說回來,四樓說的冷知識還是第一次看到
12/07 18:18, 11F

12/07 20:44, , 12F
這本書還買的到嗎?? google都沒有耶
12/07 20:44, 12F

12/07 20:59, , 13F
民明書房 - http://ppt.cc/Zz9T
12/07 20:59, 13F

12/07 21:00, , 14F
小弟我承認我也google了一下, 後來才注意到民明書坊XD
12/07 21:00, 14F

12/07 22:55, , 15F
跟民明書房買就買得到(誤)
12/07 22:55, 15F

12/08 02:14, , 16F
四樓的例子我看不太懂a 可以在稍加解釋一下嗎 感謝喔
12/08 02:14, 16F

12/08 02:18, , 18F
大致上的意思是,語法上只要求[]兩邊一個是指標型態
12/08 02:18, 18F

12/08 02:19, , 19F
另一個是整數型態,所以a[2]跟2[a]都是一樣東西。
12/08 02:19, 19F

12/08 02:20, , 20F
可能是這樣說,[]其實是由*與+兩個運算子的合體,反正
12/08 02:20, 20F

12/08 02:20, , 21F
他就是把兩者用+號運算子先處理過後,再用*取值就對。
12/08 02:20, 21F

12/08 07:20, , 22F
這種我常用啊,因為用一個 "" 我想換行又想推齊的時候,
12/08 07:20, 22F

12/08 07:21, , 23F
這樣會多出一堆空白在字串內容裡,一行一個 "" 就能把
12/08 07:21, 23F

12/08 07:21, , 24F
code 推齊又不會讓字串內容裡有多餘的空格。
12/08 07:21, 24F

12/08 12:51, , 25F
四樓說的東西 http://0rz.tw/EO0Kr
12/08 12:51, 25F

12/08 23:24, , 26F
記得WCHAR也可以這樣接的樣子~~
12/08 23:24, 26F
文章代碼(AID): #1B7CxAlN (C_and_CPP)
文章代碼(AID): #1B7CxAlN (C_and_CPP)