Что делает возвращение функции?
return 5; например возвращает число 5 в функцию. А что происходит при возвращении функции return func();?
Просто идёт выполнение указанной функции?
Функция при этом не содержит какое либо значение, которое можно передать? Типа этого int a = func();
int func2(){printf("%s\n", "World");}
int func(){return func2();}
int main()
{
func();
return 0;
}
Если написать void func2(), то почему то не работает, хотя func2() не возвращает значение.
C/C++
Возвращение функции return func(); (Си)
Запись return func2(); эквивалентна записи:
int r = func2();
return r;
int func2() в твоем случае возвращает "мусор", переменной r присваивается черт знает что.
В случае void func2() функция вообще ничего не возвращает. Как ты присвоишь то, чего даже нет?
С каждым новым вопросом ты поражаешь меня все больше и больше...
int r = func2();
return r;
int func2() в твоем случае возвращает "мусор", переменной r присваивается черт знает что.
В случае void func2() функция вообще ничего не возвращает. Как ты присвоишь то, чего даже нет?
С каждым новым вопросом ты поражаешь меня все больше и больше...
Любая функция возвращает значение, объект либо void. Последней командой в функции, возвращающей void неявно определён пустой оператор return. Его можно указать явно. Например,
void hello(const char* name) {
printf("Hello, %s!\n", name);
return;
}
Такой синтаксис даёт возможность по условию прервать функцию, возвращающую void, не дожидаясь конца её выполнения, что значительнее полезнее, чем приведённый выше пример.
void hello(const char* name) {
printf("Hello, %s!\n", name);
return;
}
Такой синтаксис даёт возможность по условию прервать функцию, возвращающую void, не дожидаясь конца её выполнения, что значительнее полезнее, чем приведённый выше пример.
return func() - возвращает значение, которое вернула функция func.
В случае void func2() - возвращать нечего, потому что func2 ничего не возвращает.
В случае void func2() - возвращать нечего, потому что func2 ничего не возвращает.
Денис *****
При запуске данного кода, идёт выполнение функции func2().
Выводится на экран слово World. Значит что то происходит.
Вот и хотел бы узнать что делает данная конструкция.
Выводится на экран слово World. Значит что то происходит.
Вот и хотел бы узнать что делает данная конструкция.
Денис *****
И если бы функция ничего не возвращала бы, то было бы предупреждение компилятора. Но его нет.
Денис *****
По какой причине int func2() должна что то возвращать?
Думаю логично было бы написать void func2(), но выводится ошибка.
Мне кажется мы по кругу ходим.
Думаю логично было бы написать void func2(), но выводится ошибка.
Мне кажется мы по кругу ходим.
Денис *****
Если пишу void func2(), появляется ошибка.
Почему func2() должна что то возвращать? Смысл?
Почему func2() должна что то возвращать? Смысл?
Денис *****
Или когда пишу return func2(), то func2() тоже автоматически превращается в возвращаемый тип функции?
Странно тогда ещё то, что func2() можно приписать разные типы возвращаемого значения и не будет ошибок.
char func2(), float func2(), double func2(), int func2()
Странно тогда ещё то, что func2() можно приписать разные типы возвращаемого значения и не будет ошибок.
char func2(), float func2(), double func2(), int func2()
Алексей Божедомов
Все будет работать так как поймет компиллатор.
Функция func возвращает значение int.
Если func2 вернет char, то компиллятор преобразует значение char в int.
И func вернет все равно int.
А вот void в int не преобразуешь.
Почитай внимательно про типы переменных и их размерность.
Похоже ты просто не понимаешь, что это такое.
Функция func возвращает значение int.
Если func2 вернет char, то компиллятор преобразует значение char в int.
И func вернет все равно int.
А вот void в int не преобразуешь.
Почитай внимательно про типы переменных и их размерность.
Похоже ты просто не понимаешь, что это такое.
Михаил Ершов
int func2() { printf("%s\n", "World"); }
int func() { return func2(); }
Вроде бы все очевидно. func2() не может быть void, пока есть return func2(), потому что в этом случае предполагается, что func2() что-то возвращает.
int func2() { printf("%s\n", "World"); } тоже возвращает что-то, даже без return. Зависит от соглашения о вызовах, вероятно, там будет значение регистра eax/rax на момент выхода из функции, а это, возможно, будет значение, возвращенное последней не-void функцией. Но с учетом всяких RVO это все гадание на кофейной гуще.
int func() { return func2(); }
Вроде бы все очевидно. func2() не может быть void, пока есть return func2(), потому что в этом случае предполагается, что func2() что-то возвращает.
int func2() { printf("%s\n", "World"); } тоже возвращает что-то, даже без return. Зависит от соглашения о вызовах, вероятно, там будет значение регистра eax/rax на момент выхода из функции, а это, возможно, будет значение, возвращенное последней не-void функцией. Но с учетом всяких RVO это все гадание на кофейной гуще.
Денис *****
От того что вы сказали что это очевидно, это очевыдным не стало.
Так на любое можно говорить- так это же очевидно. Нет, самая простая вещь может быть объяснена очень детально.
А здесь целый язык программирования. Я вас категорически не понимаю, тем более с такими аргументами: это очевидно.
Догадываться, предполагать я сам могу.
То что при return func2(); func2 становится возвращаемым типом функции вым очевидно только сейчас после того как авторы языка заложили в него такую логику. Это нифига не очевидно.
Так на любое можно говорить- так это же очевидно. Нет, самая простая вещь может быть объяснена очень детально.
А здесь целый язык программирования. Я вас категорически не понимаю, тем более с такими аргументами: это очевидно.
Догадываться, предполагать я сам могу.
То что при return func2(); func2 становится возвращаемым типом функции вым очевидно только сейчас после того как авторы языка заложили в него такую логику. Это нифига не очевидно.
Денис *****
Никакой конкретики. Какой то белый шум.
Как будто библию читаю где нужно просто поверить.
Как будто библию читаю где нужно просто поверить.
ошибочный ваш случай
int func2() { printf("%s\n", "World"); // ошибка
int func() { return func2(); }
int main()
{
func(); // ничего потому как не выводим значение этой функции
return 0;
}
Как надо писать
int func2() { return printf("%s\n", "World"); }
int func() { return func2(); }
int main()
{
func(); // ничего небудет выведено
printf( "%d \n", func() ); // си вывод int КОЛИЧЕСТВО символов
// или с++ cout funct() ; // КОЛИЧЕСТВО символов
return 0;
}
читаем си printf - ttps://proginfo.ru/printf/
int func2() { printf("%s\n", "World"); // ошибка
int func() { return func2(); }
int main()
{
func(); // ничего потому как не выводим значение этой функции
return 0;
}
Как надо писать
int func2() { return printf("%s\n", "World"); }
int func() { return func2(); }
int main()
{
func(); // ничего небудет выведено
printf( "%d \n", func() ); // си вывод int КОЛИЧЕСТВО символов
// или с++ cout funct() ; // КОЛИЧЕСТВО символов
return 0;
}
читаем си printf - ttps://proginfo.ru/printf/
Денис *****
func(); // ничего небудет выведено
Выводит слово World
Выводит слово World
Денис *****
printf( "%d \n", func() ); // си вывод int КОЛИЧЕСТВО символов
А это выводит и слово и цифру
World
6
А это выводит и слово и цифру
World
6
Денис *****
Так и что? Почему так происходит?
Это я и спрашивал в своём вопросе.
Это я и спрашивал в своём вопросе.
Денис *****
По логике получается в значение функции передаётся функция printf?
return printf("%s\n", "World");
Функция имеет тип int, а передаётся целая инструкция, это как? Что за тип у этой всей инструкции будет?
return printf("%s\n", "World");
Функция имеет тип int, а передаётся целая инструкция, это как? Что за тип у этой всей инструкции будет?
Костя Яблонский
а) причем тут вывод на экран
printf - возвращает сам возвращает int данные уже return у в вашей функции
а уже return передает данные в выходную = возвращаемую переменгую
б ) ваша функция func возращает int результат return число
вы сами ее создали функцию с int возвратом - и она должна возвращать число
ps только функции с тип void ничего не возвращает - после обрабртки ЭТО касакеться ПЕРЕМЕННЫХ а не вывода на экран
в) Функция имеет тип int, а передаётся целая инструкция, это как?
ps целая инструкция printf не передается return у
передаеться только результат int которая возвращает функция printf
ЭТО
printf - возвращает сам возвращает int данные уже return у в вашей функции
а уже return передает данные в выходную = возвращаемую переменгую
б ) ваша функция func возращает int результат return число
вы сами ее создали функцию с int возвратом - и она должна возвращать число
ps только функции с тип void ничего не возвращает - после обрабртки ЭТО касакеться ПЕРЕМЕННЫХ а не вывода на экран
в) Функция имеет тип int, а передаётся целая инструкция, это как?
ps целая инструкция printf не передается return у
передаеться только результат int которая возвращает функция printf
ЭТО
Денис *****
Похоже на разговор глухого со слепым.
Денис *****
Хотя это одним предложением объясняется.
Функция выполняется, выводит результат своих действий (World) и передаёт значение в другую функцию (Число 6).
Функция выполняется, выводит результат своих действий (World) и передаёт значение в другую функцию (Число 6).
Костя Яблонский
вы себя слышыте сми или нет
вы писали про return - return 5; например возвращает число 5 в функцию. А что происходит при возвращении функции return func();?
вам надо учить си и с++ основы и ключевые слова лексемы и инструкции
вы писали про return - return 5; например возвращает число 5 в функцию. А что происходит при возвращении функции return func();?
вам надо учить си и с++ основы и ключевые слова лексемы и инструкции
Похожие вопросы
- Что такое функция RETURN в C++ простыми словами?
- Дана матрица nxn, вычислить суммы диагональных элементов( главной и побочной ) отдельно, но в одной функции на языке си.
- Циклические алгоритмы. «Разложение функций» на языке Си
- Я так и не понял, что означает return и почему надо ставить именно 0, а не любое другое значение. Ещё кое-что о функции.
- Как в функции распечатать двумерный динамический массив в Си
- Что означает оператор return ; на языке Си.
- Что за число хранится в имени функции? (Си)
- При совершении арифметических операций с переданными в рекурсивную функцию переменными, переменные меняются(Си)
- Вопрос по языку си. Написать функцию
- В каком языке, в Си или в C++, будет работать определённая функция внутри функции?
Это является каким то нежелательным эффектом?
Какой мой последний вопрос вас удивил?
Буфер в безопасных версиях команд. strcpy_s, sprintf_s (Си)
Да, конечно при изучении обычно ведь перепрыгивают эти темы, один я такой отсталый.