2016-08-02 7 views
3

Это теоретический вопрос. Чтобы понять, как можно манипулировать оператором return в конце функции.возврат к функции вместо «0» или «переменная»

Можем ли мы сделать так:

int intialize1() 
{ 
    ...do smth; 
    ...do smth; 

    return initialize2(); 
} 

в другой файл Си

int initialize2() 
{ 
    ...do other thing; 
    ...do other thing; 

    return 0; 
} 

Является ли это правильный способ сделать это как?

+0

Если синтаксис верен, то да. То есть методы возвращают то, что они говорят, что они вернутся. Поэтому 'initialize1()' будет 'int initialize1()' и 'initialize2()' будет 'int initialize2()'. –

+0

Определение функции без явного типа возвращаемого значения по умолчанию для возврата 'int' в C90 и ранее и является незаконным в C99 и более поздних версиях. Использовали ли вы эту устаревшую форму умышленно? Кроме того, из вашего вопроса не совсем ясно, что вы пытаетесь сделать. –

+0

да это правильно. За этим шаблоном обычно следуют программисты. – RajSharma

ответ

3

То, что вы написали совершенно правильно, часто делается, и функционально эквивалентны:

int initialize1() 
{ 
    ...do smth; 
    ...do smth; 

    int x_value;    // Create a place to store the return value 
    x_value = initialize2(); // Get the result of the function, and store it. 
    return x_value;   // Return the stored value. 
} 
+0

Отлично! Альтернативное эквивалентное предложение помогает лучше понять использование оператора return. – danteDev

2

это совершенно законно, чтобы вызвать функцию от оператора возврата, но вы должны убедиться, что возвращаемые типы обеих функций согласованы и нет усечения данных или семантически неправильного неявного преобразования

+0

Спасибо @dolphinden, я уверен в использовании этого метода сейчас. Я скорректировал тип возврата, мой плохой. – danteDev

Смежные вопросы