Void против Int функций

В чем разница между функциями void и int? Когда я использую что? Будет ли использоваться void при простом выводе сообщения или значения переменной? как значение cout ‹‹;

Или это будет просто текст?

И используется ли int, когда вы действительно выполняете вычисления внутри него?


person soniccool    schedule 10.10.2011    source источник


Ответы (8)


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

для например.

void no_return_fn()
{
    cout<< "This function will not return anything" << endl;
    return; // returns nothing or void

}

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

для например.

int return_sum_of_integers_fn(int a, int b)
{
    cout<< "This function returns an integer" << endl;
    return (a + b); // returns an integer
}
person srikanta    schedule 10.10.2011
comment
Много раз я видел, как разработчики пишут функции, в которых им не нужно ничего возвращать, но они предпочитают возвращать int и возвращать фиксированное значение 0;. Почему они это сделали? Действительно ли это помогает в более широкой картине? - person Nirav Zaveri; 11.09.2014
comment
@NiravZaveri (поздний ответ, если у кого-то еще есть такой же вопрос). Это помогает в более широкой картине только для согласованности с другими функциями. Если, например, все ваши API-функции возвращают целое число в качестве кода ошибки, то возврат 0 допустим (даже если до сих пор эти функции не возвращали никакого кода ошибки). Если вы измените реализацию, вам не нужно будет перекомпилировать весь код, который ее использует, и пользователи не будут чувствовать себя странно, потому что функция имеет известную сигнатуру. - person Adriano Repetti; 25.09.2014
comment
@srikfreak - это функции void, неспособные возвращать что-то, или это просто обычная практика использовать void, когда возвращать нечего? - person COOKIE; 31.08.2018

Вы хотите, чтобы функция возвращала что-либо? Если нет, то должно быть void. Если вы хотите, чтобы он возвращал int, то он должен быть int. Если вы хотите, чтобы он возвращал что-то еще, то он должен иметь какой-то другой тип возврата.

person Beta    schedule 10.10.2011

Некоторые предпочитают использовать функции, которые возвращают int, чтобы указать на некоторые ошибки или особые случаи. Рассмотрим этот код:

int print (int* ptr)
{
    if (ptr == NULL)
    {
        return -1; // Error code.
    }

    std::cout << *ptr;

    return 1; // Success code.
}
person Ahmed Khalaf    schedule 10.10.2011

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

person Fitz Chen    schedule 10.10.2011

Как вы слышали выше, void не возвращает значение, поэтому вы используете его, когда вам это не нужно. Например, вы можете использовать 'void' не только для печати текста, но в основном для изменения параметров (изменения того, что у вас уже есть), поэтому вам не нужно возвращать значение.

Допустим, вы хотите найти int c , представляющее собой сумму двух (целочисленных) чисел, a и b (так что a+b=c). Вы можете написать функцию, которая складывает эти числа и присваивает их значение c.

int c;
int sum (int a, int b)
{
    return a+b;     
}       

c = sum(a,b);

При использовании void вы просто измените c, поэтому вместо записи c = function(arguments) у вас будет function(c), который изменяет c, например:

int c;
void sum(int a, int b, int c)
    {
        c = a+b;
    }

sum(a,b,c);

После последней строки «c» равно сумме «a» и «b» :-)

person Kusavil    schedule 25.05.2013

Вы возвращаете void, чтобы указать, что ничего не возвращается.

Возврат типа int может указывать или не указывать, что вычисления были выполнены (например, это может быть просто код возврата).

person duffymo    schedule 10.10.2011

Еще одно отличие состоит в том, что функция void не требует возврата внутри нее: эти 2 фрагмента кода действительны и не генерируют предупреждение компилятора: Фрагмент 1

void msg1()
{
    cout<< "This is a message." << endl;
    return; // returns nothing or void

}

Фрагмент 2

void msg2()
{
    cout<< "This is a message." << endl;
}

Оба имеют одинаковое поведение, и предупреждение не отображается.

Если вы объявляете функцию недействительной и не возвращаете значение, ваш компилятор, скорее всего, отобразит ПРЕДУПРЕЖДЕНИЕ, например «предупреждение: нет инструкции возврата в функции, возвращающей непустое значение».

Это зависит от параметров модификатора, отправленных компилятору, отображается ли эта ошибка или нет.

Этот код, скорее всего, отображает предупреждение компилятора, так как нет возврата:

int test(){
    printf("test");
}
person Juan Pablo    schedule 21.03.2016

На самом деле, это необходимо, если вы компилируете свой код для размещенной системы, такой как ПК, Linux, Mac, Android. Тогда main должен вернуть int. Если вы компилируете код для автономной системы, такой как встроенные микроконтроллеры, или если вы создаете ОС, то возвращаемый тип main может быть любым.

Хотя при использовании int или void ошибки не возникнет, но это не соответствует стандарту C.

person Community    schedule 22.01.2014