看板 C_and_CPP 關於我們 聯絡資訊
剛剛在網路上看到一個東西 while(*s++ = *t++); 左思右思就是看不懂 後來查了一下,原來這種寫法等價於: while(*t){ *s = *t; s++; t++; } *s = *t; 也是這時候才知道C字串有*s++這種寫法 但我還是有兩個問題 1.*s++這種寫法,迴圈似乎不用加入終止條件,是因為C字串中必定有'\0'嗎? 因為我另外還有查到C++中有這種寫法: while(*s){ cout << *s++; } 這是代表C/C++中只要在迴圈中遇到'\0'就會作為終止條件嗎? 2.雖然知道兩種寫法是相等的,但請問為何會是相等的? 背後的原理我實在想不透 -- 標題 [洽特] 台灣雞翅國際股份有限公司?? 這麼奇特的名字是怎麼來的呢? 有人有八卦嗎????
sweetmiki: 給你的雞雞一雙翅膀 跨國界尻槍09/07 19:42
qqq3892005: 雞翅→G翅→G WING→GG WIN→GG double IN→GGININ 09/07 19:48
-- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 210.63.206.65 ※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1536227747.A.847.html
jerryh001: C字串結尾必為'\0' 且'\0'的ascii值為0 所以是false 09/06 18:19
jerryh001: 2的話可以參考運算子優先度 自己先試著解析看看順序 09/06 18:21
chuegou: '\0' 0x00兩個是一樣的 有些平臺NULL也一樣 09/06 19:03
chuegou: 2的問題 我猜你只是指標不熟? 09/06 19:06
Schottky: 建議不要這樣寫,字串如果沒有\0結尾會很有趣 09/06 21:42
jerryh001: 有沒\0的字串嗎?(除了自己塞字元進陣列 09/06 22:15
Schottky: 「惡意使用者」會故意去塞奇怪字串,或者你的程式出bug 09/06 22:46
Schottky: 各位捫心自問,每次吃字串時有沒有檢查長度等等 09/06 22:49
dces4212: 這讓我有個疑問 macro裡的字串compiler會幫我們補\0嗎 09/08 23:19
dces4212: 我現在是怕到自己補== 09/08 23:20
LPH66: 字串實字 (string literal, 用雙引號寫的) 一定會有 \0 09/09 01:19
dces4212: 了解 感恩L大 09/09 14:00
cphe: 這種寫法比較要注意的是邊界,尤其是destination 09/10 14:38