为什么我的for循环在我的void函数中不起作用

时间:2019-07-14 22:33:07

标签: c++ function for-loop

我的for循环在void函数外部起作用,但不在其内部起作用。

我尝试不使用函数,但是它可以工作,但是我需要将此for循环放入函数内部,因为我想在其他代码中使用它。

它是这样的:

#include <iostream>
using namespace std;

int main()
{
    int n, sum = 0;
    cout << "Enter a positive integer: ";
    cin >> n;
    for (int i = 1; i <= n; ++i) {
        sum += i;
    }
    cout << "Sum = " << sum;
    return 0;
}

但不是这样:

#include <iostream>
using namespace std;

void somation(){
    int n, sum = 0;
    cout << "Enter a positive integer: ";
    cin >> n;
    for (int i = 1; i <= n; ++i) {
        sum += i;
    }
    cout << "Sum = " << sum;
}

这是我在dev-cpp中得到的错误消息:

D:\Dev-Cpp\MinGW64\x86_64-w64-mingw32\lib\libmingw32.a(lib64_libmingw32_a- 
crt0_c.o) In function `main':

18            C:\crossdev\src\mingw-w64-v3-git\mingw-w64- 
crt\crt\crt0_c.c      undefined reference to `WinMain'

D:\CPP Projects\collect2.exe  [Error] ld returned 1 exit status

2 个答案:

答案 0 :(得分:3)

我相信您遇到的问题是您试图执行一个函数而不在main中调用它。 如果要在其他地方使用函数Somation,可以复制它,但是始终必须在main中调用该函数,否则它将无法正常工作。

void somation()
{
    int n, sum = 0;
    cout << "Enter a positive integer: ";
    cin >> n;
    for (int i = 1; i <= n; ++i) {
         sum += i;
    }
    cout << "Sum = " << sum;
    return;
}

int main(){
    somation();
    return 0;
}

答案 1 :(得分:2)

您的程序需要具有一个主要功能(程序的入口)。

尝试一下

#include <iostream>

using namespace std;

void somation()
{

    int n, sum = 0;
    cout << "Enter a positive integer: ";
    cin >> n;
    for (int i = 1; i <= n; ++i) 
    {
        sum += i;
    }
    cout << "Sum = " << sum;
}

int main()
{
    somation();
    return 0;
}