Можно ли написать функцию без ";" в конце?

Я видел в Интернете следующий код:

#include <SoftwareSerial.h>
SoftwareSerial mySerial(8,9);
void setup()
{
  mySerial.begin(9600);    
  Serial.begin(9600);   
  delay(100);
}
void loop()
{
  if (Serial.available()>0)
  mySerial.write(Serial.read());
  if (mySerial.available()>0)
  Serial.write(mySerial.read());
}

Команда работает отлично. Как можно было в коде написать команду без ";" в конце строки?

Ссылка на код: введите описание ссылки здесь

, 👍-1

Обсуждение

пройти курс программирования или прочитать книгу о C или C++, @Juraj


1 ответ


Лучший ответ:

1

Вы имеете в виду этот блок?

if (Serial.available()>0)   <- here
mySerial.write(Serial.read());
if (mySerial.available()>0) <- here
Serial.write(mySerial.read());

Если да, то есть ; в конце каждой команды. Команды просто разделены на две строки каждая. Это можно было бы написать так:

if (Serial.available()>0) mySerial.write(Serial.read());
if (mySerial.available()>0) Serial.write(mySerial.read());

Вторая и четвертая строки — это тело if. Лучше использовать отступы с исходным расположением:

if (Serial.available()>0)
    mySerial.write(Serial.read());
if (mySerial.available()>0)
    Serial.write(mySerial.read());

Или еще лучше добавьте скобки вокруг тела:

if (Serial.available()>0) {
    mySerial.write(Serial.read());
}
if (mySerial.available()>0) {
    Serial.write(mySerial.read());
}
,

Это означает, что нам разрешено пренебрегать {} и () для условий, верно? Но почему иногда возникают ошибки, если я не пишу эти символы?, @Асмир Абдимажитов

Вы можете опустить скобки, если в теле if есть только один оператор., @Majenko

Условное выражение или выражение цикла, например if или while, управляет следующим оператором или блоком. Ему не нужна собственная точка с запятой, поскольку это не полный оператор. Блок — это один или несколько операторов, окруженных символами «{» и «}», и он рассматривается как оператор. Итак, следующий простой оператор заканчивается символом ';' или блок, окруженный '{', '}', является необходимой частью 'if' или ' while'., @JRobert