よくやってしまうミス

大抵はすぐに気づくのですが、これのために何時間も費やしてしまった事があります

その1

for( i = 0; 条件1 && 配列の境界チェック; i++ ) { /* array[i]に何かする */ }

とやるところを

for( i = 0; ○○○ || □□□; i++ ) { ... }

とやってしまってオーバーフロー。orです。論理和です。
メモリを破壊しようが構わずに、条件1が満たされる限り突っ走ります。(あとエラーが出ない限り。)

その2

何かの範囲チェックにて(範囲外の場合を捕捉したい)

if(i < MIN && MAX < i) { ... } // ||にしなよ、orにしなよ、論理和にしなよ!

論理積にしてしまうと、「範囲の左側にあって、なおかつ右側にある場合」になってしまいます。