2011-10-10 89 views
2

void和int函数会有什么不同?我什么时候使用哪个?在输出消息或变量值时会使用void吗?像cout < <值;Void vs Int函数

或者它只是文本?

而且当你真的在里面进行计算的时候会用到int吗?

回答

4

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 
} 
+0

很多时候,我已经看到了开发人员编写,他们没有返回任何东西的功能,但他们选择了返回int和一个固定值“return 0;”。他们为什么要那样做?它是否真的有助于更大的图片? –

+2

@NiravZaveri(晚_answer_的情况下,其他人有相同的_question_)。它仅在与其他功能保持一致的情况下才有助于“更大的图景”。例如,如果所有API函数都返回一个整数作为错误代码,则返回0是可以接受的(即使迄今为止该函数不返回任何错误代码)。如果您要更改实现,那么您将不需要重新编译所有使用它的代码,因为函数具有“已知”签名,所以用户不会感到“奇怪”。 –

4

是否想要的函数返回什么?如果不是,那么它应该是void。如果你想要它返回一个int,那么它应该是int。如果你想让它返回其他东西,那么它应该有一些其他的返回类型。

0

您将返回void表示没有任何被返回。

int的返回值可能表示已经执行了计算(例如,可能只是一个返回码)。

1

有些人更喜欢使用返回int来指示某些错误或特殊情况的函数。考虑这个代码:

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

    std::cout << *ptr; 

    return 1; // Success code. 
} 
1

当你使用void时,它意味着你不想从函数返回任何东西。而int返回可能是函数中的计算结果,或者在返回时指示状态,如错误号或其他可以告诉您执行该函数时发生了什么的其他内容。

0

就像你上面听到的那样,void不会返回值,所以当你不需要这样做时使用它。例如,你可以使用'void'来打印文本,但主要是修改一个参数(改变你已有的东西),所以你不需要返回一个值。

假设你想找到int c,它是两个整数,ab(so a + b = c)。您可以编写一个函数,它增加了这些数字,并分配给它的价值,是c

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

c = sum(a,b); 

在使用void,你只会modificate 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' :-)

0

其实,如果你正在编译代码的托管系统,如PC,在Linux,Mac,Android的这是必要的。然后main必须返回int。如果您是一个独立的系统,如嵌入式微控制器编译代码,或者如果你正在一个OS,那么主要的返回类型可以是任何东西。

但如果你使用int或无效,但根据标准C.

0

另一个区别它不达标是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; 
} 

两者都具有相同的行为并且不显示警告。

如果你声明函数非空,你不返回一个值,你的编译器可能会显示一个类似的警告“警告:在功能上没有返回语句,返回非空”。

这取决于发送,如果显示此错误或不编译修改参数。

此代码是LIKEY因为没有回报显示编译器警告:

int test(){ 
    printf("test"); 
}