Перечислены два примера объявлений переменных:
Пример 1:
x = 10;
y = ++x;
Пример 2:
x = 10;
y = x++;
В книге сказано, что в Примере 1 Y равно 11, и в примере 2 Y равно 10. Я думаю, я понимаю, почему, и вот мои рассуждения, поэтому, пожалуйста, дайте мне знать, если у меня есть это и / или есть ли более краткий способ думать об этом.
В первом примере Y равен 11, потому что он просто установлен равным «x + 1», так как оператор приращения идет первым, тогда как во втором примере Y устанавливается равным исходному объявлению Икс а затем происходит операция приращения Икс по отдельности. Кажется, это имеет смысл, поскольку визуально в Примере 2 обе переменные находятся в непосредственной близости от знака равенства, и тогда операция «x + 1» будет выполняться в качестве запоздалой мысли к этому уравнению, не оказывая влияния на Y.
Ты прав.
y=++x
средства:
x++;
y=x;
ТЕМ НЕ МЕНИЕ,
y=x++;
средства:
y=x;
x++;
Я думаю, что у вас есть, но это можно понять более простыми словами.
y = x++;
Приращение х после этой строки. Результат
y = 10, x = 11
Тогда как в
y = ++x;
Увеличьте х перед этой строкой. Результат
y = 11, x = 11
Золотое правило:
Увеличение / уменьшение префикса (++ x или —x) имеют ассоциативность справа налево.
Постфиксный инкремент / декремент (x ++ или x—) имеет ассоциативность слева направо.
x = 10
if (x++ == 11) {
// Post increment
}if (++x == 11 ) {
// Pre increment
}
Итак, в вашем случае:
Пример 1:
x = 10;
y = ++x;
Первоначальное значение x (здесь 10) сначала увеличивается, а затем присваивается y.
Пример 2:
x = 10;
y = x++;
Первоначальное значение x сначала присваивается y, а затем увеличивается (до 11).