【问题标题】:Void vs Int FunctionsVoid 与 Int 函数
【发布时间】:2011-12-04 04:33:08
【问题描述】:

void 和 int 函数有什么不同?我什么时候用哪个?仅打印消息或变量值时会使用 void 吗?像 cout

还是只是文字?

当您实际在其中进行计算时使用 int 吗?

【问题讨论】:

    标签: c++ function int void


    【解决方案1】:

    另一个区别是 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");
    }
    

    【讨论】:

      【解决方案2】:

      实际上,如果您正在为托管系统(例如 PC、Linux、Mac、Android)编译代码,这是必要的。然后 main 必须返回 int。如果您正在为独立系统(例如嵌入式微控制器)编译代码,或者您正在制作操作系统,那么 main 的返回类型可以是任何类型。

      虽然使用 int 或 void 不会发生错误,但它不符合标准 C。

      【讨论】:

        【解决方案3】:

        就像您在上面听到的那样,void 不返回值,因此您可以在不需要执行此操作时使用它。 例如,您可以使用 'void' 不仅打印文本,还可以主要修改参数(更改您已有的内容),因此您不需要返回值。

        假设您要查找 int c ,它是两个(整数)数字之和,ab(所以 a+b=c)。您可以编写一个函数来添加这些数字并将其值分配给c

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

        在使用void 时,您将只修改c,因此您将拥有修改cfunction(c) 而不是写c = function(arguments),例如:

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

        在最后一行之后,你的'c'等于'a'和'b'的总和:-)

        【讨论】:

          【解决方案4】:

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

          【讨论】:

            【解决方案5】:

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

            int print (int* ptr)
            {
                if (ptr == NULL)
                {
                    return -1; // Error code.
                }
            
                std::cout << *ptr;
            
                return 1; // Success code.
            }
            

            【讨论】:

              【解决方案6】:

              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
              }
              

              【讨论】:

              • 很多次我看到开发人员编写的函数不需要返回任何内容,但他们选择返回 int 和一个固定值“return 0;”。他们为什么要那样做?它真的对大局有帮助吗?
              • @NiravZaveri(迟到回答,以防其他人有相同的问题)。它有助于“更大的画面”,只是为了与其他功能保持一致。例如,如果您的所有 API 函数都返回一个整数作为错误代码,那么返回 0 是可以接受的(即使到目前为止,该函数没有返回任何错误代码)。如果您要更改实现,则无需重新编译所有使用它的代码,用户也不会感到“奇怪”,因为函数具有“已知”签名。
              • @srikfreak 是无法返回东西的 void 函数,还是在没有任何东西要返回时使用 void 只是一种常见的做法?
              【解决方案7】:

              您返回void 表示没有返回任何内容

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

              【讨论】:

                【解决方案8】:

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

                【讨论】:

                  猜你喜欢
                  • 1970-01-01
                  • 1970-01-01
                  • 2016-01-05
                  • 1970-01-01
                  • 1970-01-01
                  • 2020-02-05
                  • 1970-01-01
                  • 2020-06-16
                  • 2020-11-18
                  相关资源
                  最近更新 更多