int foo() { int a = 24; int b = 25; /* 参照されない変数への代入 */ int c; c = a << 2; return c; b = 24; /* 実行されないコード */ } 変数bにはreturn文の後に値が代入されているが、これは実行されない。すなわち、コードの実行は逐次的であり、return文が何らかの条件で囲まれているわけでもないので、return文の後のコードは実行不可能(到達不可能)である。ただし、例えばreturn文の後にラベルがあって、どこかから分岐して飛んでくる場合は、その限りではない。 さらに、この代入文を削除すると、bという変数が初期値を代入したとき以外では全く使われないことがわかる。オプティマイザがどこまで積極的に最適化するかにもよるが、変数bは生成されるコードから完全に削除される可能性もある。 関数内で何らかの計算が行わ