ああごめん。#ifdefの書き間違い。
    if (a > 0) {
#ifdef _DEBUG
printf("a = %d\n", a);
#endif
    }
    b = 1;
    c = 2;
これをリリースモードでビルドするとa > 0の場合にのみb = 1が動作する環境に遭遇したことがある。
使用していたコンパイラが空ブロックにNOPを生成しないタイプだったのが不具合の原因だった。