Этот код дает неправильный результат. Почему?
void setup()
{
int calc(9,2);
Serial.begin(9600);
}
void loop()
{}
int calc(int val1, int val2)
{
Serial.print(val1 + val2);
}
Это не синтаксическая ошибка, я получаю вывод как 1, я должен получить 11.
@Kakarot_1, 👍-1
Обсуждение2 ответа
Имя функции должно сообщать, что она делает.
Нечто, называемое calc(), в основном не должно печатать (за исключением целей отладки))
void setup() {
Serial.begin(9600);
printSum(9,2);
}
void loop() {}
void printSum(int val1, int val2) {
Serial.print(val1 + val2);
}
Еще один хороший подход — определить функцию, возвращающую результат.
int calc(int a, int b) {
return a+b;
}
void setup() {
Serial.begin(9600);
Serial.println(calc(9,2));
}
void loop() {}
Если вашей целью является вызов функции с помощью int calc(9,2);
, вы можете изменить его на calc(9,2);
, это способ вызова функций, декларатор типов не требуется, если вы не создаете указанную функцию (или в объявлении, которое не имеет ничего общего с настройкой)
Если вы хотите объявить свои функции, это нужно сделать в самом верху вашего кода, вне функции настройки, а с моей стороны arduino 1.8.9, это не обязательно.
Кроме того, вы вызываете функцию печати перед Serial.begin()
, хорошей практикой может быть вызов Serial.begin()
в самом верху вашего setup, чтобы не ошибиться в том, почему отладка не отображается.
Что касается того, почему у вас напечатана 1, если это весь ваш код, я действительно не знаю, у меня нет вывода, когда я пробую ваш код на своем конце
тл;др;
void setup() {
Serial.begin(9600);
calc(9,2);
}
- Как использовать SPI на Arduino?
- Как решить проблему «avrdude: stk500_recv(): programmer is not responding»?
- Как создать несколько запущенных потоков?
- Как подключиться к Arduino с помощью WiFi?
- avrdude ser_open() can't set com-state
- Как узнать частоту дискретизации?
- Что такое Serial.begin(9600)?
- Я закирпичил свой Arduino Uno? Проблемы с загрузкой скетчей на плату
что такое
int calc(9,2);
? вы печатаете перед Serial.begin(), @JurajЕсть два серьезных предупреждения, говорящих о том, что компилятор явно не понимает ваших намерений. ( И я нет :) ), @DataFiddler