Что именно делает возвращаемый тип в функции?
Что-то, чего я никогда не понимал и до сих пор не понимаю, что конкретно делает возвращаемый тип? Все в учебниках просто говорят, что void ничего не возвращает, а int возвращает int и т. д. Но что это значит? Куда возвращается? Кажется, я не понимаю, о чем все говорят, когда обсуждают функции.
@Grant Scott, 👍1
Обсуждение2 ответа
Он возвращает его тому, на что назначена функция.
Возьмите функцию:
int plus(int a, int b) {
return a + b;
}
Эта функция принимает два целых числа, складывает их и "возвращает" их как целое число.
Затем вы можете сделать следующее:
int c = plus(3, 4);
Функция и c
получит значение 7
.
То же самое можно сделать:
Serial.println(plus(3, 4));
И функции Serial.println()
будет передано значение 7
для печати.
Тип возвращаемого значения определяет тип данных, которые могут быть возвращены.
О, и void
означает не "ничего не возвращает", а означает "ничего не возвращает". - что означает, что вы не можете присвоить его чему-либо, так как ничего не возвращается для назначения.
Чтобы добавить к «И функции Serial.println() будет передано значение 7 для печати». В частности, ей будет передано значение **int** 7, которое в конечном итоге приведет к выводу, отличному от других типов данных., @DataFiddler
Причина в том, что функция оценивается так же, как и любое другое выражение. Каждое выражение - `(x**x - 3*x + 5), например, - имеет значение и тип (если тип не является пустым, тогда оно не имеет значения или не определено), включая функции . Компилятору необходимо знать тип каждого элемента выражения, чтобы знать, как использовать этот элемент в операции (арифметической или другой). Иногда значение необходимо преобразовать из одного типа в другой, чтобы объединить с другим элементом или присвоить переменной, и компилятор знает только тип каждого элемента, как это сделать.
Вот пример:
float squareroot(float x);
можно объявить функцию, которая принимает число с плавающей запятой и возвращает его квадратный корень как число с плавающей запятой. Если вы присвоите это значение интегралу переменной, компилятор должен убедиться, что функции возвращают не целое число, а число с плавающей запятой, поэтому он включает соответствующий код для преобразования числа с плавающей запятой в целое число (путем усечения дробной части, в данном случае). случай).
Если бы функция могла быть написана без объявления типа возвращаемого значения, компилятор не смог бы выполнить преобразование или даже узнать, понадобится ли оно.
- Какие есть другие IDE для Arduino?
- Плата для разработки STM8 с Arduino IDE
- Все float возвращают округленное целое число в меньшую сторону.
- Код CRC8 не работает должным образом
- Проблемы с Serial.read()
- Еще один простой и глупый вопрос о строках C++
- Как поместить пробелы в длинный последовательный ввод println()
- Как закодировать выпуск датчика мгновенного касания в IDE?
это то же самое, что объявить переменную как результат функции вместо жестко заданного литерала., @dandavis