Неправильный вывод при запуске кода C [дубликата]
На этот вопрос уже есть ответ:
Почему эти конструкции используют неопределенное поведение до и после приращения? 14 ответов Возможное дублирование:
Порядок оценки параметров перед вызовом функции в C
Для приведенного ниже кода я ожидал, что выходные данные будут 20 и 76, но вместо этого 75 и 21 будут выводиться. Пожалуйста, объясните, почему это так.
#include<stdio.h>
unsigned func(unsigned n)
{
unsigned int a =1 ;
static unsigned int b=2;
a+=b; b+=a;
{
unsigned int a=3;
a+=b; b+=a;
}
//printf("%d %d ",a,b);
return (n+a+b);
}
int main()
{
printf("%d %d\n",func(4),func(5));
return 0;
}