为什么C ++会返回原始值

时间:2018-04-12 19:54:09

标签: c++

我一般都是编程的新手,更不用说C ++了。谁能告诉我为什么我的程序也返回原始变量值?

int whichNumber(int x); //prototype

int main() {

    int x;


    cout << "Enter a number in the range 1-5: ";
    cin >> x; 
    int whichNumber(int x);
    cout << "\n" << whichNumber(x) << "\n";
    return 0;
}

//Functions
int whichNumber(int x){

    string numbers[] = {"one.", "two.", "three.", "four.", "five."};

    if(x == 1)
    cout <<"You entered the number " << numbers[0];
    else if(x == 2)
    cout << "You entered the number " << numbers[1];
    else if(x == 3)
    cout << "You entered the number " << numbers[2];
    else if(x == 4)
    cout << "You entered the number " << numbers[3];
    else if(x == 5)
    cout << "You entered the number " << numbers[4];
    else 
        cout << "Please enter a valid number.";

    return x;
}

如果我没有把&#34;返回x;&#34;在我的函数结束时,它返回32766,我认为这是数组中的最大空间。只知道为什么会有很多帮助。虽然我希望它不会返回原始值。

谢谢大家的时间。如果有人回答,我很抱歉,我还没有在数据库中找到它。

我知道数组可能不是打印单词的最佳方式......但我不知道其他任何方式。仍然是编程的新手,我知道如何使用数组。

3 个答案:

答案 0 :(得分:0)

如果您不希望它返回值,请将该函数设为void返回类型。

void whichNumber(int x)
{
   // do stuff...
   return;  ///< optional, void doesn't return anything
}

它正在返回int x,因为这正是你告诉它的目的。

答案 1 :(得分:0)

x是包含传递给函数的数字的变量,并且您将再次返回相同的x。 在函数头中,将return数据类型设置为void并删除return语句。

答案 2 :(得分:0)

我想我意识到困惑在哪里,

当您通过其中包含print语句的函数调用whichNumber(x)时,该调用足以使语句出现在 stdout 上。您不需要在cout

中打包电话

现在让我们修复您的whichNumber功能。你的if梯子有点复杂,有更好的方法可以做到这一点。您对阵列的使用实际上是好的

int whichNumber(int x) {
    string numbers[] = {"one", "two", "three", "four", "five"};
    if ((x > 5) || (x < 1)) {
        cout << "Enter a valid number\n";
        return 1;  // returning 1 when a function fails is fairly common, though IMO in C++ I'd rather raise an exception
    }
    cout << "You entered " << numbers[x-1] << endl; // array indices start from 0
    return 0;
}

并在main转此

int whichNumber(int x);
cout << "\n" << whichNumber(x) << "\n";

到这个

int whichNumber(int x);
int s_code = whichNumber(x); // s_code has the success code of the func

正如其他人所建议的那样,如果您不想处理错误代码,那么void函数的返回类型可能为whichNumber

此外,如果您在函数中没有return任何返回类型不是void的内容,则由编译器决定如何处理此问题。这称为未定义行为。这是一件坏事,你应该尽量避免它。

欢迎使用C ++,请查看有关您问题的第一条评论中的书籍:)