-4
Я не могу понять вывод следующего кода, может кто-нибудь помочь мне?Директивы препроцессоров
#define PRODUCT(x) (x*x)
main()
{
int i=3,j,k;
j=PRODUCT(i++);
k=PRODUCT(++i);
printf("\n %d%d",j,k);
}
Для выше я получил результат, как:
9 и 49
Я не могу понять, как 49 приходит и когда я закомментировать
k=PRODUCT(++i);
Я получил вывод как 25. Не знаю, что происходит в програме m
ahhh. идеальное неопределенное поведение ... –
Когда вы не понимаете код, который содержит макросы, первым шагом является их расширение вручную. (Если вы используете макросы вообще, конечно, чего вы не должны.) –
Возможный дубликат http://stackoverflow.com/questions/4176328/undefined-behavior-and-sequence-points –