Как работает этот код?? val3 определяется как константа
const int val3 = 7;
void setup(){
Serial.begin(9600);
int val3 = 8;
int val4 = 4;
Serial.print(calc(val3,val4));
}
void loop()
{}
int calc(int val1, int val2)
{
return val1 + val2;
}
этот код дает результат 12.
@Kakarot_1, 👍0
Обсуждение2 ответа
Вы объявили val3 два раза: один раз как константу int, а другой раз как int (в цикле установки). Замените оператор int val3=8 на val3 = 8
. Вы почувствуете разницу.
Первое объявление в этом случае бесполезно. В качестве попытки вы можете сначала объявить val3 как int, а во втором объявлении вы можете объявить val3 как const int.
Просто попробуйте и обратите внимание на разницу. Удачного кодирования!
Спасибо, я понял., @Kakarot_1
В вашем коде определение const int val3 = 7;
находится вне каких-либо функций, поэтому оно определяет глобальную константу/переменную (доступную в любой части вашего кода). код).
Определение int val3 = 8;
находится внутри вашей функции setup()
, поэтому оно действует как локальная переменная только внутри этой функции. . Это переопределяет константу val3
, определенную вне функции setup()
. Т.е. глобальная константа val3
и локальная переменная val3
внутри setup()
не являются одной и той же переменной, что неизбежно приведет к путанице (т.к. в вашем случае).
Это допустимый синтаксис, но я не считаю его хорошей практикой написания кода. Однако полезно знать, почему это работает именно так.
Спасибо, я понял., @Kakarot_1
- Как использовать SPI на Arduino?
- Как решить проблему «avrdude: stk500_recv(): programmer is not responding»?
- Как создать несколько запущенных потоков?
- Как подключиться к Arduino с помощью WiFi?
- avrdude ser_open() can't set com-state
- Как узнать частоту дискретизации?
- Что такое Serial.begin(9600)?
- Я закирпичил свой Arduino Uno? Проблемы с загрузкой скетчей на плату
напечатать val3 в цикле(), @jsotola
Я вас не понял, можете еще раз пояснить., @Kakarot_1
вы используете второй
int val3
, определенный в setup(). он затеняет глобальный val3, @Juraj@Akash, добавьте оператор Serial.print() в блок loop() ... распечатайте значение val3 ... что печатает в последовательном мониторе?, @jsotola