看板 C_and_CPP 關於我們 聯絡資訊
其實比較像閒聊啦, 不過這邊沒有閒聊可以選 最近發現兩種coding style 第一種是會在函數前面宣告變數, 等到要用到的時候才給他初值 比如 int func() { int var; /*Other code Other code Other code*/ var = somevalue; /*some to process var some to process var*/ } 第二種是 宣告就同時給值 比如 int func() { int var = somevalue; /*Other code Other code Other code*/ /*some code to process var some code to process var*/ } 我想這兩種寫法應該是都可以, 只跟可讀性有關吧? 但是這邊的可讀性又不是會看不下去那種, 只是習慣問題. 不知道大家的習慣如何? ==== 補充一下 我看到第二種寫法那套code 他連for loop一定先給值 他的for loop 會這樣寫 int func() { int i = 0; /*other code*/ for (; i < MAX; i++) { /*do something*/ } } 所以這樣是比較嚴謹的方法嗎? 可以避免i 沒有宣告到之類的 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 61.222.81.253
james732:我覺得第二種方式比較"安全",特別是用在 += 這種情況時 06/02 15:09
meconin:以 Coding Style 來說,可能用 #define 放 .h 比較好 06/02 15:35
chchwy:可讀性反而次要,c++裡沒給初值的變數很危險 06/02 15:35
meconin:我相信大多數的編譯器,是會編出一樣的組語只差 addr 順序 06/02 15:35
※ 編輯: wzbird 來自: 61.222.81.253 (06/02 15:48)
diabloevagto:第二種比較好,怕你還沒給予初值就使用到,會錯 06/02 16:07
diabloevagto:我覺得還沒用到就不要宣告,宣告了就表示要用,那表 06/02 16:08
diabloevagto:示你就有初值要給他。 06/02 16:08
diabloevagto:另外我for那個i會在for裡面宣告,不要讓他scope太大 06/02 16:09
x000032001:for迴圈這個根本只是因為純C不能在裡面宣告吧wwww 06/02 16:44
我剛剛試了, 在for裡面宣告, 果然被gcc罵了 Q_Q error: 'for' loop initial declaration used outside C99 mode 所以C90不允許在for 才中宣告變數 但是第二種style 又習慣在宣告就給初值, 所以才把for的值也提到function 最前面 讓for的第一個欄位留空白 ※ 編輯: wzbird 來自: 61.222.81.253 (06/02 16:58)
diabloevagto:C99我記得要求所有變數都要在一開使宣告,不能途中 06/02 17:17
diabloevagto:在多宣告變數 06/02 17:18
diabloevagto:看到下一篇發現原來是c90... 06/02 17:18
※ 編輯: wzbird 來自: 61.222.81.253 (06/02 17:23)
wzbird:所以應該是C90的限制才發生這個error 06/02 17:23
wzbird:那這樣說我的gcc是c90的規格囉? (我自己都不知道XD) 06/02 17:24
diabloevagto:C99或c99都有支援,我不太清楚預設是那個,不過你可 06/02 18:42
diabloevagto:可以自己下參數選擇 06/02 18:42
james732:gcc遇到副檔名是.c的檔案,預設應該會用c90的標準編譯 06/02 19:08
james732:如果是 for (int i...) 印象中副檔名為 .cpp 就可以 06/02 19:09
meconin:c++ 不需要在 scope 的頭宣告, C 的話,用 {} 搞個 scope 06/02 19:48
Favonia:還有第三種,就是要用時才宣告並給初值... 06/02 20:26
diabloevagto:上面說的第二種,不就是樓上講的那種嗎... 06/02 20:47
descent:gcc -std=c99 可以支援 c99 06/02 22:26
Favonia:diabloevagto:不一樣...第三種宣告的位置在第一種指定的地 06/02 23:00
Favonia:方,而不是在開頭(我發現 littleshan 回了...) 06/02 23:01