Так как никто другой на самом деле не занялся Could someone please explain this to me?
Я верю, что буду:
j++
это стенография, это не фактическая операция (хорошо, это действительно так, но потерпите меня для объяснения)
j++
действительно соответствует операции j = j + 1;
, за исключением того, что это не макрос или что-то, что выполняет встроенную замену. Здесь много дискуссий об операциях i+++++i
и о том, что это значит (потому что это можно интерпретировать как i++ + ++i
ИЛИ (i++)++ + i
Что приводит нас к: i++
против ++i
. Их называют операторами post-increment
и pre-increment
. Можете ли вы догадаться, почему они так названы? Важной частью является то, как они используются в заданиях. Например, вы можете сделать: j=i++;
или j=++i;
Теперь мы проведем пример эксперимента:
// declare them all with the same value, for clarity and debug flow purposes ;)
int i = 0;
int j = 0;
int k = 0;
// yes we could have already set the value to 5 before, but I chose not to.
i = 5;
j = i++;
k = ++i;
print(i, j, k);
//pretend this command prints them out nicely
//to the console screen or something, it's an example
Каковы значения i, j и k?
Я дам вам ответы и позволю вам разобраться;)
i = 7, j = 5, k = 7;
Это сила операторов до и после приращения, а также опасность их неправильного использования. Но вот альтернативный способ написания того же порядка операций:
// declare them all with the same value, for clarity and debug flow purposes ;)
int i = 0;
int j = 0;
int k = 0;
// yes we could have already set the value to 5 before, but I chose not to.
i = 5;
j = i;
i = i + 1; //post-increment
i = i + 1; //pre-increment
k = i;
print(i, j, k);
//pretend this command prints them out nicely
//to the console screen or something, it's an example
Хорошо, теперь, когда я показал вам, как работает оператор ++
, давайте посмотрим, почему он не работает для j+3
... Помните, как я раньше называл его «сокращением»? Вот и все, см. Второй пример, потому что это эффективно , что делает компилятор перед использованием команды (это сложнее, но это не для первых объяснений). Таким образом, вы увидите, что «расширенная стенография» содержит i =
AND i + 1
, и это все, что есть в вашем запросе.
Это восходит к математике. Функция определяется где f(x) = mx + b
или уравнением y = mx + b
, так что мы называем mx + b
... это, конечно, не функция или уравнение. Самое большее, это выражение. Это все, что является j+3
выражением. Выражение без присваивания не приносит нам пользы, но оно требует времени процессора (при условии, что компилятор его не оптимизирует).
Я надеюсь, что это прояснит вам и даст вам возможность задать новые вопросы. Ура!