【问题标题】:Defining an int with "if' statements using another "int" as a parameter使用另一个“int”作为参数定义一个带有“if”语句的int
【发布时间】:2020-12-27 08:24:24
【问题描述】:

尝试通过使用 if 语句更改其值来使用 int 创建一个依赖于输入的变量。可能犯了一个愚蠢的错误,但到目前为止,无法弄清楚(作为旁注,也尝试使用 Switch 语句,也无法使其工作)。

#include <iostream>
#include <string>
        
        int main(){
            
            int jobID;
            std::cin >> jobID;

            int setjobSalary (int jobSalary) {
                
                if (jobID == 1) {
                    
                    setjobSalary = 600;
                    
                    }
                
                else if (jobID == 2) {
                    
                    setjobSalary = 1600;
                    
                    }
                
                    return jobSalary;
                }
                
            int currentjobSalary = jobSalary - 300;
            }

提前致谢。

【问题讨论】:

  • 你看到编译器的错误信息了吗? main.cpp: In function 'int main()': main.cpp:9:46: error: a function-definition is not allowed here before '{' token 函数不能在其他函数内部定义(除非它们是 lambda 函数)。更不用说你从不调用setjobSalary() 函数,它应该return 值。 setjobSalary = 600; 是错误的。 c++ 与 Basic 不同。
  • 你不能像这样在main 的主体内定义第二个函数setjobSalary

标签: c++ if-statement return


【解决方案1】:

C++ 不允许您在另一个函数内部定义一个函数。对于您正在尝试做的事情,您根本不需要函数,只需要一个变量,例如:

#include <iostream>
#include <string>
                        
int main()
{
    int jobID;
    std::cin >> jobID;

    int jobSalary;
                
    if (jobID == 1) {
        jobSalary = 600;
    }
    else if (jobID == 2) {
        jobSalary = 1600;
    }
    else {
        jobSalary = 0;
    }
                
    int currentjobSalary = jobSalary - 300;
    ...

    return 0;
}

如果你真的要定义一个函数,它需要在main()之外,例如:

#include <iostream>
#include <string>
        
int getjobSalary (int jobID)
{
    if (jobID == 1) {
        return 600;
    }
    else if (jobID == 2) {
        return 1600;
    }                    
    else {
        return 0;
    }
}
                
int main()
{
    int jobID;
    std::cin >> jobID;

    int currentjobSalary = getJobSalary(jobID) - 300;
    ...

    return 0;
}

或者,您可以使用 lambda(仅限 C++11 及更高版本),例如:

#include <iostream>
#include <string>
                        
int main()
{
    int jobID;
    std::cin >> jobID;

    auto getjobSalary = [=]() -> int {
        if (jobID == 1) {
            return 600;
        }
        else if (jobID == 2) {
            return 1600;
        }                    
        else {
            return 0;
        }
    };

    int currentjobSalary = getJobSalary() - 300;
    ...

    return 0;
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-02-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-12-20
    • 2012-06-22
    • 2023-02-15
    相关资源
    最近更新 更多