というわけで昨日悩んでいた三項演算子の問題は解決しました。
単にif文内のステートメントの本来「;(セミコロン)」で区切るべきところが、打ち間違って「:(コロン)」になっていただけでした。
BASICプログラムでもコロンとセミコロンを間違えてバグるという例は多々あります。キーボードで隣同士だからいけないんだい!(いいがかり)
というわけで昨日悩んでいた成果がこれ。16進数を10進数に変換して表示するプログラムです。
#includemain()
{
unsigned a;
int i,ct;
unsigned b[4];
int d[4];a = 0x7fff;
ct = 0;b[0] = 10;
b[1] = 100;
b[2] = 1000;
b[3] = 10000;for (i = 3; i >= 0; --i) {
do {
ct += 1;
a = a - b[i];
} while (a >= b[i]);d[i] = ct;
ct = 0;}
for (i = 3; i>= 0; --i) {
printf("%d",d[i]);
}
printf("%d",a);
}
結局if文使わなかったというオチ(おい)。
リンク前のファイルを見ればなにか参考にならないかと企んでいるところ。