Что за цирк с типом данных int?

первый ответ неверный

Класс! Обратите внимание, что в строке №3 можно было написать и int a = -32768; - разницы никакой.

Сейчас нам ТС объяснит, что это баг ардуины.

P.S. Не забывайте вставлять код нормально.

Почему? Проверьте :slight_smile:

Ёкарный бабай, значит все (от слова ВСЕ) серверы любого типа ошибочны и недопустимы? Надо будет сказать мужикам, а то они и не в курсе.

потому что значение 32768 лежит за пределами типа int, и, следовательно, использование этого кода может повлечь ровно те же проблемы, что в начальном вопросе ТС.

Нет, разница принципиальна. Это правильный ответ.

Может, тут Вы правы. Но в конкретной среде ведёт себя также.

Евгений, Вы ведете себя непедагогично :slight_smile: Двести сообщений убито на то, чтобы обьяснить одному студенту почему не надо использовать 32768 в типе инт - и тут же принимаете от другого такой ответ как правильный :slight_smile:

так задача же неправильная. Отсюда и ответы такие.

Хотя, конечны, Вы правы, но тема-то уже давно превратилась в чисто поприкалываться :slight_smile:

Видимо, в 17-й строке вы видите женщину в красном, и очень этим гордитесь. А я лично вижу там страшного уродца, потому что даже while(True){} выглядит красивее, чем эта попытка использовать for без параметров. Видимо, кто-то хотел похвастаться перед всем миром своим знанием правила “краткость - сестра таланта”. Так-то оно так, конечно, но только талант заключается в том, чтобы сказать кратко, не искажая смысл излагаемого.

Кстати, @anonimSimen , а почему там for (;;), а не while(1) ? Есть какая-то принципиальная разница?

Мне кажется, что хоть

do {

} while (1);

один хрен

Sorry, but
while (true){}

Только не компилируется.

Есть такой Первый закон Скотта: «Неважно, что неправильно. Возможно, это хорошо выглядит…»

К сожалению больше года пенсионер уже. Ответ не мой, а wokwi. Я сначала -32768 поставил, а потом думаю дай проверю на слабо. И не ошибся - эмулятор его преодолел :slight_smile:
Мне его вариант понятен.

Согласен - для ничего от ничего до ничего с шагом в ничего… делай…

Вы упрощаете этот оператор до искажения его сути. Нет там никаких “для” и “шагов”. С таким походом Вы сильно ограничиваете его применимость.

Правильное понимание этого оператора таково:

for (op1; op2; op3) op4;
op5 .....

эквивалентно:

  1. Выполнить op1;
  2. Выполнить op2;
  3. ЕСЛИ результат п.2 равен 0, то перейти к п.7
  4. Выполнить op4;
  5. Выполнить op3;
  6. Перейти к п.2
  7. Выполнить op5 …

Любую из операций можно опустить, тогда её результат считается единицей.

никаких “шагов” и вообще ничего. Операции ор1-ор5 могут быть абсолютно любыми. Единственное требование - результат операции op2 должен позволять преобразование к типу int.

Например, адруино-приложение можно записать так:

for (setup() ;; loop());

Это совершенно корректно и никаких “шагов”.

Ну я этого не знаю, ориентируюсь на

for (initialization; condition; increment) {операторы выполняющиеся в цикле}

Этот исходник надо осмыслить прежде чем понять есть ли ещё полезный вариант подобный справочному.

Это сильное упрощение.

Нинаю. Мошт, Петрович обьяснит.

Удивился, действительно в стандарте языка так описывается for ?
Посмотрел - нет не так. И “правильное понимание” не совпадает со стандартом.

C11 6.8.5.3 The for statement

6.8.5.3 The for statement
1 The statement
for ( clause-1 ; expression-2 ; expression-3 ) statement
behaves as follows: The expression expression-2 is the controlling expression that is
evaluated before each execution of the loop body. The expression expression-3 is
evaluated as a void expression after each execution of the loop body. If clause-1 is a
declaration, the scope of any identifiers it declares is the remainder of the declaration and
the entire loop, including the other two expressions; it is reached in the order of execution
before the first evaluation of the controlling expression. If clause-1 is an expression, it is
evaluated as a void expression before the first evaluation of the controlling expression.158)
2 Both clause-1 and expression-3 can be omitted. An omitted expression-2 is replaced by a
nonzero constant.