到達不能性の検証
出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2020/04/28 05:23 UTC 版)
任意のコードが到達不能コードかどうかを判断することは停止性問題を解くことと等価である。すなわち、あらゆる到達不能コードを正しく把握することは不可能である。 実際には分析手法は精巧化しており、到達不能コードを検出する量は大幅に改善されている。例えば以下のコードで、定数畳み込みや単純なフロー解析では、xyz という文が到達不能であることを示すことができる。 int n = 2 + 1; // 3に [[定数畳み込み]] される // 3 != 4なので常に実行されない if (n == 4) { xyz; } しかし、以下のコードで xyz という文が到達不能であることを検出するには(sqrt関数が平方根の計算を行うかどうかチェックしなければいけないため)努力を要する。 double x = sqrt(2); if (x > 2) { xyz }
※この「到達不能性の検証」の解説は、「到達不能コード」の解説の一部です。
「到達不能性の検証」を含む「到達不能コード」の記事については、「到達不能コード」の概要を参照ください。
- 到達不能性の検証のページへのリンク