Эксперимент с return - C (СИ)
Формулировка задачи:
Из книжки Кернигана и Ритчи:
Глава 1. Функции.
Под
Авторы имели в виду отсутствие значения оператора return (например, return; ) или отсутствие самого оператора return? Потому что современный компилятор gcc выдает ошибку, если не задать return при указании возвращаемого значения в функции.
Если же не писать return в функции с возвращаемым значением, компилятор не выводит даже предупреждения об этом, но возвращает значение последней инструкции в теле функции, то есть подставляет к ней return.
Вывод:
Но если компилятор подставляет return к последней инструкции, то почему при
возвращается 1, а не количество отображенных символов?
Функция не обязательно возвращает какое-нибудь значение. Инструкция return без выражения только передает управление в ту программу, которая ее вызвала, не передавая ей никакого результирующего значения. То же самое происходит, если в процессе вычислений мы выходим на конец функции, обозначенный в тексте последней закрывающей фигурной скобкой. Возможна ситуация, когда вызывающая функция игнорирует возвращаемый ей результат.
Инструкция return без выражения только передает управление...
#include <stdio.h> int test ( int, int ); int main ( void ) { int m = 3, n = 5; printf ( "value until: %3d %3d\n", m, n ); printf ( "value after: %3d\n", test ( m, n ) ); return 0; } int test ( int m, int n ) { int i = 13, j = 17; n = 33; ++m; }
value until: 3 5
value after: 4
int test ( int m, int n ) { int i = 13, j = 17; n = 33; ++m; printf ( "Finish" ); }
Решение задачи: «Эксперимент с return»
textual
Листинг программы
void test(int a, int b) { int i; if (a > b) { printf("Error\n"); return; } for (i = a; a < b; i++) printf("%d\n", i); }
Объяснение кода листинга программы
- Объявлены две переменные типа int — a и b.
- Если a больше b, то выводится сообщение об ошибке и функция возвращает управление.
- Иначе, инициализируется переменная i значением a.
- И выполняется цикл от i до b с шагом 1.
- В каждой итерации выводится значение i.
- Если a меньше b, то цикл продолжается.
- Если a равно или больше b, то цикл завершается.
- Возвращается управление.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д