0

例えば

    int a = 3;
    int b = sizeof(++a);
    int c = a;

結果として、c は 3 または 4 に等しいですか? 結果は特定のコンパイラに依存しますか?

4

1 に答える 1

0

仕様では、インクリメント演算子が演算子内で使用された場合、影響を受けないsizeofと述べています。

これは抽象的な観点からも理にかなっています。具体的には、このsizeof演算子は、オブジェクトが使用するバイト数を返します。整数またはポインターをインクリメントしてもその整数のサイズは変わりませが、++ 演算子は新しいプログラマーにサイズが変わると誤解させる可能性があります。

興味がある場合は、トピック「副作用」を検索して、この主題に関する詳細な議論を行ってください。

于 2013-09-04T03:57:25.220 に答える