看板 C_and_CPP 關於我們 聯絡資訊
我想問的是像這樣的東西: char s[10] = "aaa" "bbb" "" "ccc"; printf("%s", s); 這是合理的語法嗎? 為什麼字串們會自動銜接起來呢? -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 218.211.0.80
stonehomelaa:string literal concatenation 12/07 17:50
twotwoone:空白隔開的字串會自動合起來,define常用到 12/07 18:03
DJWS:謝謝樓上幾位 :) 12/07 18:07
holymars:這就和int a[3]; a[2] = 1;也可以寫成 2[a] = 1;一樣.. 12/07 18:08
holymars:《你所不知道的C/C++冷知識》民明書坊 12/07 18:10
DJWS:樓上講的也是 string literal concatenation? 12/07 18:10
twotwoone:第一個例子,如果不是因為兩個""會合併,就反而會印出# 12/07 18:11
twotwoone:應該說,如果你這樣寫 printf("token#n") 就會有問題 12/07 18:12
DJWS:謝謝樓上給的例子! 12/07 18:15
twotwoone:話說回來,四樓說的冷知識還是第一次看到 12/07 18:18
sa901119:這本書還買的到嗎?? google都沒有耶 12/07 20:44
VictorTom:民明書房 - http://ppt.cc/Zz9T 12/07 20:59
VictorTom:小弟我承認我也google了一下, 後來才注意到民明書坊XD 12/07 21:00
holymars:跟民明書房買就買得到(誤) 12/07 22:55
elfkiller:四樓的例子我看不太懂a 可以在稍加解釋一下嗎 感謝喔 12/08 02:14
twotwoone:大致上的意思是,語法上只要求[]兩邊一個是指標型態 12/08 02:18
twotwoone:另一個是整數型態,所以a[2]跟2[a]都是一樣東西。 12/08 02:19
twotwoone:可能是這樣說,[]其實是由*與+兩個運算子的合體,反正 12/08 02:20
twotwoone:他就是把兩者用+號運算子先處理過後,再用*取值就對。 12/08 02:20
tinlans:這種我常用啊,因為用一個 "" 我想換行又想推齊的時候, 12/08 07:20
tinlans:這樣會多出一堆空白在字串內容裡,一行一個 "" 就能把 12/08 07:21
tinlans:code 推齊又不會讓字串內容裡有多餘的空格。 12/08 07:21
DJWS:四樓說的東西 http://0rz.tw/EO0Kr 12/08 12:51
aecho:記得WCHAR也可以這樣接的樣子~~ 12/08 23:24