Современный компилятор встроит его, соблюдая оригинальное поведение вызова функции.

из моих друзей показал мне эту программу и спросил, почемуi переменная увеличивается в два раза.

Согласно моему пониманиюMAX(i++, ++j); в этой строкеi сначала отправляется в качестве параметра, а затем увеличивается, поэтому, если начальное значениеi является10 тогда увеличенное значение должно быть11, но это показывает увеличенное значениеi как12.

Программа:

#include<stdio.h>

#define MAX(x,y) (x)>(y)?(x):(y)

void main(void)
{
    int i = 10;
    int j = 5;
    int k = 0;

    k = MAX(i++, ++j);

    printf("%d %d %d",i,j,k);
}

Выход :

12 6 11

Может кто-нибудь, пожалуйста, объясните мне, как значение увеличивается до 12?

Благодарю.

Ответы на вопрос(8)

Ваш ответ на вопрос