У меня есть некоторый код C:Порядок операций для предварительного инкремента и пост-приращения в аргументе функции?
main()
{
int a=1;
void xyz(int,int);
xyz(++a,a++); //which Unary Operator is executed first, ++a or a++?
printf("%d",a);
}
void xyz(int x,int y)
{
printf("\n%d %d",x,y);
}
Функция xyz
имеет два параметра, передаваемые в, ++a
и a++
. Может ли кто-нибудь объяснить последовательность операций, чтобы объяснить результат?
Приведенный выше код печатает «3 13» или «2 23» в зависимости от того, какой компилятор используется.
Возможно, было бы лучше, если бы вы использовали разные переменные в вашей примерной программе. Кроме того, вы должны поместить «\ n» * после * значения, которые вы печатаете, а не раньше. В настоящее время это будет напечатать «2 23» – DevinB
Вам следует попробовать что-то более ясное. Этот синтаксис довольно странный для человека. Сделайте код простым, не пытайтесь писать сложные вещи. – INS