В следующем коде:Назначение и Старшинство операторов с
int main()
{
int x = 2, y = 1;
x *= x + y;
printf("%d\n", x);
return 0;
}
Как это операторы старшинство работы? , поскольку * имеет более высокий приоритет, чем +, поэтому я ожидаю, что операция умножения должна быть выполнена сначала, но результат показывает, что он вычисляется как x * = (x + y), поэтому добавление выполняется первым!
Та же путаница в следующем коде:
int main()
{
int x = 2, y = 2;
x /= x/y;
printf("%d\n", x);
return 0;
}
не знаю, как операторы старшинство будет работать ... Спасибо за тех, кто имеет объяснение.
'* =' и '/ =' - отдельные операторы со своим собственным приоритетом (и ассоциативность) –
Если вы сомневаетесь, замените выражение: x = x * (x + y) и x = x/(х/у). Это сделает код само собой разумеющимся. –