よくやってしまうミス
大抵はすぐに気づくのですが、これのために何時間も費やしてしまった事があります
その1
for( i = 0; 条件1 && 配列の境界チェック; i++ ) { /* array[i]に何かする */ }
とやるところを
for( i = 0; ○○○ || □□□; i++ ) { ... }
とやってしまってオーバーフロー。orです。論理和です。
メモリを破壊しようが構わずに、条件1が満たされる限り突っ走ります。(あとエラーが出ない限り。)
その2
何かの範囲チェックにて(範囲外の場合を捕捉したい)
if(i < MIN && MAX < i) { ... } // ||にしなよ、orにしなよ、論理和にしなよ!
論理積にしてしまうと、「範囲の左側にあって、なおかつ右側にある場合」になってしまいます。