sa さんが書きました: ↑7年前
一番下の「putchar("01"[x >> --count & 1']);」というのが初めて見るのでよくわからないのですが、文字列リテラルを配列のように扱っているのでしょうか?あと「& 1」のあとの「′」には何か意味がありますか?
すみません。「'」は投稿時に入ったゴミです。
文字列リテラルは const char (または char) の配列です。
コード:
putchar("01"[x >> --count & 1]);
は
コード:
static const char s[3] = "01";
putchar(s[x >> --count & 1]);
と同じです。
書き方は他にもあります。
コード:
putchar(x >> --count & 1 ? '1' : '0');
また、x >> --count & 1 は
(x >> --count) % 2 と書くこともできます。
x が unsigned なので、コンパイラの最適化により & 1 と
同じコードになるでしょう。