-5

私は後置演算子と前置演算子に関するやや古典的な試験問題に直面しています。次の点を考慮してください。

#define MAX( a, b ) ( a > b ) ? (a) : (b) 

int main()
{
    int x = 2, y = 2;

    if( MAX( ++x, y ) == x )
    {
        printf( " %d is greater than %d ", x, y );
    }

    return 0;
}

試験問題は、プログラムの出力を求めます。私にとっては「3 は 2 より大きい」ですが、実際の出力は「4 は 2 より大きい」です。

ポストとプレフィックスがどのように機能するかは理解していますが (少なくとも私はそう思っていました)、変数が 2 回インクリメントされる方法がわかりません。これについての説明はありますか?

4

1 に答える 1