作者warrickl (阿捷)
看板C_and_CPP
標題Re: [問題] 條件運算元 ? :
時間Wed Jun 17 10:09:42 2009
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
1F:推 ledia:printf("%d%c", a[i][j-1], (j==4)?'\n':' '); 能提出就提出 06/17 10:22
2F:→ ledia:不過我覺得 ? : 很醜 ..... 06/17 10:23
3F:→ ledia:除非後面只有接像是 '\n' 這樣單純的敘述, 不然我傾向不用 06/17 10:24
4F:推 VictorTom:如果要用的話, 小弟我也比較習慣像l大這樣的用法XD 06/17 10:54
5F:推 ddavid:我也是都只用在很單純值。最多一個運算,如: 06/17 17:08
6F:→ ddavid:(n > 1) ? (n - 1) : (n)之類,一眼就很明白幹嘛的東西XD 06/17 17:09
7F:→ hpo14:你引言這麼多,可讀性也不高阿 06/17 22:06