Если вывод Start убрать …
Скетч использует 1864 байт (5%) памяти устройства. Всего доступно 32256 байт.
Глобальные переменные используют 190 байт (9%) динамической памяти, оставляя 1858 байт для локальных переменных. Максимум: 2048 байт.
И ваш без стартового вывода…
Скетч использует 2084 байт (6%) памяти устройства. Всего доступно 32256 байт.
Глобальные переменные используют 190 байт (9%) динамической памяти, оставляя 1858 байт для локальных переменных. Максимум: 2048 байт.
Ну, да. Данные, как видите, одинаковые. Что до кода, так он более функциональный. У меня же значение реально может хранится в переменной типа для последующего использования (хотя здесь это и не нужно), Вы просто печатаете сумму, ничего не сохраняя. Это немного разные программы. Отсюда и разница в коде, а вовсе не от ООП. ООП тут не при делах вовсе.
Женя. Наши философские расхождения не должны мешать уважать профессионализм друг друга! ИМХО. Нет?
Стандарт требует от пре-инкремента сохранения lvalue.
Конечно, при перегрузке оператора можно хоть слона в холодильник запихивать, это не нарушает стандарт, поскольку это уже не инкремент, а просто два знака “+”, но это не является примером “красивого” кода или “бест практис”.
Значит я неправильно перевожу фразу: «The result is a prvalue. The type of the result is the cv-unqualified version of the type of the operand» (§ 8.2.6, ISO/IEC 14882:2017)
5.3.2 Increment and decrement [expr.pre.incr]
1 The operand of prefix ++ is modified by adding 1, or set to true if it is bool (this use is deprecated). The
operand shall be a modifiable lvalue. The type of the operand shall be an arithmetic type or a pointer to
a completely-defined object type. The result is the updated operand; it is an lvalue, and it is a bit-field if
the operand is a bit-field.
стр 109
это просто странная дискуссия, инспирированная уж точно не научным вопросом.
Женя, дорогой, а как тогда написать: ++(++x)? Уточни, если не трудно. Если результат не левое?
5.2.6 Increment and decrement [expr.post.incr]
1 The value of a postfix ++ expression is the value of its operand. [ Note: the value obtained is a copy of
the original value — end note ] The operand shall be a modifiable lvalue. The type of the operand shall be
an arithmetic type or a pointer to a complete object type. The value of the operand object is modified by
adding 1 to it, unless the object is of type bool, in which case it is set to true. [ Note: this use is deprecated,
see Annex D. — end note ] The value computation of the ++ expression is sequenced before the modification
of the operand object. With respect to an indeterminately-sequenced function call, the operation of postfix
++ is a single evaluation. [ Note: Therefore, a function call shall not intervene between the lvalue-to-rvalue
conversion and the side effect associated with any single postfix ++ operator. — end note ] The result is a prvalue. The type of the result is the cv-unqualified version of the type of the operand. See also 5.7 and 5.17.
2 The operand of postfix – is decremented analogously to the postfix ++ operator, except that the operand
shall not be of type bool. [ Note: For prefix increment and decrement, see 5.3.2. — end note ]
А твоя цитата из раздела про ПОСТ-инкремент. Я её выше привел.
Ты перепутал. И я даже не стану тебя говнить за это!
Но услышать извинения было бы приятно… хотя я в такое не верю.
С одной стороны, нулевой и единичный элементы - фундаментальное понятие алгебры.
А с другой - при необходимости что-то перенумеровать, никакие уникальные свойства этих понятий не используются, поэтому нумерация “один-два-три-четыре” ничем не лучше и не хуже, чем “ноль-один-два-три”, а та в свою очередь - чем “красный-оранжевый-желтый-зеленый”. Мы просто приписываем определенному положению в последовательности определенный термин. И совершенно не важно, будет этот термин называться “ноль”, “один”, “красный” или “велосипед”.