■三項演算子は簡潔な式を書く時便利
#include <stdio.h>
int main(void)
{
for(int i = 0 ;i < 10;i++){
for(int j = 0 ; j < 10 ;j++){
int max = (i > j) ? i : j;//★推奨
printf("%dと%dの最大値は%d\n",i,j,max);
}
}
}
聖典 プログラミング言語Cで紹介されている例です。
■適度に改行すると読みやすい
#include <stdio.h>
#include <time.h>
int main(void){
int 西暦;
printf("西暦入れて\n");
scanf("%d",&西暦);
printf("%d年は%s\n",
西暦,
__isleap(西暦)?
"閏年です":
"閏年ではありません"
);
}
適度に改行すると
if文より簡潔で理解しやすくないですか?
■複雑な式には向かない
int f(int flg) {//NG
int x = 0x80 | (flg == 0) ? 0 : 0xFF00 ;
return x;
}
0x80 | (flg == 0) ? 0 : 0xFF00 ;は、コンパイラによって
(0x80 | (flg == 0)) ? 0 :0xFF00 ;と解釈されるので、
flg の値に無関係に(0x80 | (flg == 0)) は真と評価されます。
■複雑な式は素直にif文で書こう
int g(int flg) {
if(flg == 0) return 0x80;
else return 0xFF00 | 0x80;
}