TOP >> マニアックなプログラミング
トリッキーコードネット トリッキーなコード

【トリッキーなコード】二状態・三状態のトグル、ループカウンタ

2状態(1:ON ⇔ 0:OFF)のトグル

さて、a という変数の中に、0,1 のいずれかの値が入るとします。 その際、変数aの中身を交互に切り替える方法は、以下の通り^^;)
a = 1 - a;
または
a ^= 1;
切り替え前の値を a 切り替え後の値を a' とした場合の動作表です。
aa'
01
10
見事にトグルしてますね~~w

2状態(1 ⇔ 2)のトグル

1,2 のトグルで状態を切り替える場合、
aa'
12
21
こんな感じです↓
a = 3 - a;

3状態のトグル

さて、お次は、 a という変数の中に、0,1,2 のいずれかの値が入るものとします。 その際、 変数aの中身が 0 または 2 の場合、2 または 0 に切り替えたく、 中身が 1ならば、そのまま値を維持する という切り替えをしたいとします。 動作表にするとこんな感じ↓
aa'
02
11
20
その場合の方法は、以下の通り^^;)
a = 2 - a;
また、0,1,2 で三状態を表すのではなく、 -1,0,1 で三状態を表す場合は、
aa'
-11
00
1-1
以下の方法が使えます^^;)
a = -a;
キタ━━━━━━(゚∀゚)━━━━━━!!!!! 可読性も悪くないですし、これらは 早速実務で使える技達ですね♪

0〜Xまでの繰り返し

0, 1, 2, 3, 0, 1, 2, 3, 0, 1,... と、0 ~ X(左の例では X が 3) を延々と繰り返し表示する技。
i = 0; X = 3; while(true) { printf("%d ", (++i % (X + 1))); }
トリッキーコードネット の TOPへ HOTNEWS の 総合TOPへ