Путаница с расширением Macro [дубликаты]
Возможный дубликат:
Может ли кто-нибудь объяснить это неопределенное поведение (i = i ++ + ++ i, i = i ++ и т. Д.)
Какие проблемы может принести приложению следующий макрос?
Я написал пример приложения с расширением макросов для его реализации в iOS (код Objective C).
Это что-то вроде:
#define SQUARE(x) ( x * x )
main( )
{
int i = 3, j, k ;
j = SQUARE( i++ ) ;
k = SQUARE( ++i ) ;
printf ( "\nValue of i++ = %d\nValue of ++i = %d", j, k ) ;
}
Выход был:
Value of i++ = 9
Value of ++i = 49
Ожидаемый результат был:
Value of i++ = 9
Value of ++i = 25
Я удивлен этим результатом. Я немного запутался с этим расширением макроса.
Почему это произошло? Пожалуйста, помогите мне найти причину.