【发布时间】:2011-12-04 04:33:08
【问题描述】:
void 和 int 函数有什么不同?我什么时候用哪个?仅打印消息或变量值时会使用 void 吗?像 cout
还是只是文字?
当您实际在其中进行计算时使用 int 吗?
【问题讨论】:
void 和 int 函数有什么不同?我什么时候用哪个?仅打印消息或变量值时会使用 void 吗?像 cout
还是只是文字?
当您实际在其中进行计算时使用 int 吗?
【问题讨论】:
另一个区别是 void 函数不需要在其中有返回值: 这 2 个 sn-ps 代码是有效的,不会生成编译器警告: 片段 1
void msg1()
{
cout<< "This is a message." << endl;
return; // returns nothing or void
}
片段 2
void msg2()
{
cout<< "This is a message." << endl;
}
两者具有相同的行为并且不显示警告。
如果你声明了一个非 void 函数并且你没有返回一个值,你的编译器可能会显示一个警告,比如“警告:在函数返回非 void 中没有返回语句”。
是否显示此错误取决于发送给编译器的修饰符参数。
此代码可能会显示编译器警告,因为没有返回:
int test(){
printf("test");
}
【讨论】:
实际上,如果您正在为托管系统(例如 PC、Linux、Mac、Android)编译代码,这是必要的。然后 main 必须返回 int。如果您正在为独立系统(例如嵌入式微控制器)编译代码,或者您正在制作操作系统,那么 main 的返回类型可以是任何类型。
虽然使用 int 或 void 不会发生错误,但它不符合标准 C。
【讨论】:
就像您在上面听到的那样,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(c) 而不是写c = function(arguments),例如:
int c;
void sum(int a, int b, int c)
{
c = a+b;
}
sum(a,b,c);
在最后一行之后,你的'c'等于'a'和'b'的总和:-)
【讨论】:
当您使用 void 时,这意味着您不希望函数返回任何内容。 而 int 返回可能是函数中计算的结果,也可能是返回时的状态,比如错误号或其他可以告诉你函数执行时发生了什么的东西。
【讨论】:
有些人更喜欢使用返回 int 的函数来指示某些错误或特殊情况。考虑这段代码:
int print (int* ptr)
{
if (ptr == NULL)
{
return -1; // Error code.
}
std::cout << *ptr;
return 1; // Success code.
}
【讨论】:
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
}
【讨论】:
您返回void 表示没有返回任何内容。
一个 int 返回可能表示或可能不表示已经执行了计算(例如,可能只是一个返回码)。
【讨论】:
你想让函数返回什么吗?如果不是,那么它应该是void。如果您希望它返回一个int,那么它应该是int。如果你想让它返回别的东西,那么它应该有一些其他的返回类型。
【讨论】: