Re: [問題] 條件運算元 ? :

看板C_and_CPP (C/C++)作者 (阿捷)時間16年前 (2009/06/17 10:09), 編輯推噓3(304)
留言7則, 4人參與, 最新討論串4/4 (看更多)
int i,j; int a[3][4]= {{1,2,3,4},{5,6,7,8},{9,0,1,2}}; for(i=0;i<3;i++) for(j=0;j<4;j++,((j==4)?printf("%d\n",a[i][j-1]):printf("%d ",a[i][j-1]))); 可讀性不高@@~ ※ 引述《pizza0117 (阿水~*)》之銘言: : 我之前寫程式要輸出矩陣的時候 : 為了換行常常用到這個耶~ : 主要是放在for(?; ?; 這裡); : 例如for(i=0; i<31; i++,(i%7)? printf("%2d\n",m[i]) : printf("%2d ",m[i]) ) : 這個例子是寫萬年曆裡面用到的 : 上面那個好像不太好看= =+ : 先看下面的好了 : 假設一個陣列int a[3][4] = {...}; : 通常輸出都是這樣寫 : for(i=0; i<3; i++) : { : for(j=0; j<4; j++) : { : printf("%d ",a[i][j]); : } : printf("\n"); : } : 我寫程式莫名的不喜歡{} : 能省則省 : for(i=0; i<3; i++) : { : for(j=0; j<4; j++) : printf("%d ",a[i][j]); : printf("\n"); : } : 為了i迴圈的那個換行一定要加{} ˋˊ : 所以我就把程式改成 : for(i=0; i<3; i++,printf("\n")) : for(j=0; j<4; j++) : printf("%d ",a[i][j]); : 老實說我不知道這樣用是不是正確的~ : 但目前還沒遇到錯誤~就繼續使用了~ : 曾想過要不要改成這樣 : for(i=0; i<3; i++,printf("\n")) : for(j=0; j<4; j++,printf("%d ",a[i][j])); : 不過覺得好像太誇張了就沒有這樣做了 : ※ 引述《gozha (勾炸)》之銘言: : : ( 條件判斷 )?( : : ( 條件判斷 )?( : : 運算式1 : : ):( : : 運算式2 : : ) : : ):( : : ( 條件判斷 )?( : : 運算式1 : : ):( : : 運算式2 : : ) : : ) : : 好像沒有比較好看= = -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 163.29.94.129

06/17 10:22, , 1F
printf("%d%c", a[i][j-1], (j==4)?'\n':' '); 能提出就提出
06/17 10:22, 1F

06/17 10:23, , 2F
不過我覺得 ? : 很醜 .....
06/17 10:23, 2F

06/17 10:24, , 3F
除非後面只有接像是 '\n' 這樣單純的敘述, 不然我傾向不用
06/17 10:24, 3F

06/17 10:54, , 4F
如果要用的話, 小弟我也比較習慣像l大這樣的用法XD
06/17 10:54, 4F

06/17 17:08, , 5F
我也是都只用在很單純值。最多一個運算,如:
06/17 17:08, 5F

06/17 17:09, , 6F
(n > 1) ? (n - 1) : (n)之類,一眼就很明白幹嘛的東西XD
06/17 17:09, 6F

06/17 22:06, , 7F
你引言這麼多,可讀性也不高阿
06/17 22:06, 7F
文章代碼(AID): #1AE51dFs (C_and_CPP)
討論串 (同標題文章)
文章代碼(AID): #1AE51dFs (C_and_CPP)