-2
public class Test
{
    public static void main(String[] args) {
        int i = 10;
        i = i++;
        System.out.println("value of i is : " + i);
    }
}

出力は次のとおりです。10

で同様のコードを実行するとC、出力は11.

4

4 に答える 4

0

Java と C は異なるルールを持つ異なる言語です。C では、式が評価され、副作用が適用される正確な順序は規定されていません。のような式の場合、代入が行われる前に演算子i = i++の副作用が適用されるという保証はありません。++結果は、プラットフォーム、最適化設定、さらには周囲のコードによって異なります。動作は未定義です。コンパイラは、予期しない結果を生成することを含め、適切と思われる方法で状況を処理できます。

Java の OTOH では、厳密な評価順序が指定されており、副作用がすぐに適用されるため、式は明確に定義されています。

于 2013-08-23T12:57:01.173 に答える
0

Java では、i = i++;post ++ はそのステップの後に値を増やします。しかし、ここで に割り当てた時点ではi++iまだiそう10です10。しかし C では、これは Java とは異なる場合があります。コードで使用するi=++iJava、次のようになります11.

于 2013-08-23T12:06:34.787 に答える