C++ C++;-有一个;未初始化的局部变量y已使用“;在我尝试制作一个简单计算器时发出警告

C++ C++;-有一个;未初始化的局部变量y已使用“;在我尝试制作一个简单计算器时发出警告,c++,function,C++,Function,这是我的第一篇文章。我有一个问题,让我的CML计算器运行,我知道有更好的方法,使一个计算器比我的代码,所以请留下的意见等,因为我是一个初学者程序员,重要的是收到反馈 函数实践.cpp #include "pch.h" #include <iostream> #include "functions.cpp" using namespace std; int main() { int x; int y; char oper; cout <<

这是我的第一篇文章。我有一个问题,让我的CML计算器运行,我知道有更好的方法,使一个计算器比我的代码,所以请留下的意见等,因为我是一个初学者程序员,重要的是收到反馈

函数实践.cpp

#include "pch.h"
#include <iostream>
#include "functions.cpp"

using namespace std;

int main()
{
    int x;
    int y;
    char oper;
    cout << "Welcome to this test calculator" << endl;
    cout << "Please Enter a operator to use: " << endl;
    cin >> oper;

    cout << "Enter a x and y value " << endl;
    cin >> x, y;

    calculate(x, y, oper);

    return 0;
}

#包括“pch.h”
#包括
#包括“functions.cpp”
使用名称空间std;
int main()
{
int x;
int-y;
字符操作器;

文件
practice.cpp
中的cout:

cin>>x,y;
应该是
cin>>x>>y;

cin>>x,y;
将仅读取
x
的输入

在这里,
作为
cin
部分的结尾,而
y
将像一个单独的部分一样工作

对《守则》中的以下内容的理解:

逗号运算符将始终优先于最右边的运算符

例:
x=(y,z);

在此行中,
z
的值将分配给
x


同样,在
cin>>x,y;
行中,
y
不执行任何操作。然后
cin>>x
将读取用户的输入。

排序输入:
cin>>x,y;
->
cin>>x>>y;
调试问题应包括错误消息(复制并粘贴为文本)。这也是为了解释为什么您的代码不应触发该错误。在这种情况下,错误消息将指出哪个变量未初始化,您的任务将是指出初始化该变量的行。functions practice.cpp(22):错误C4700:未初始化的局部变量“y”used
#include“functions.cpp”
也是一个潜在的问题。您应该包括头文件,通常是.h文件,并编译和链接实现文件。
#include
将包含的文件复制到包含文件中。如果出现这种情况,像Visual Studio这样的IDE可能会看到functions.cpp,并执行通常的操作,编译和链接它。现在您有了函数practice.cpp和functions.cpp中包含的ns.cpp都定义了相同的函数,链接器不喜欢这样。它不知道哪个是真正的
calculate
,并将发出错误。
#include "functions.h"
#include "pch.h"
#include <iostream>

using namespace std;

int calculate(int x, int y, char oper) {


    switch (oper)
    {
    case '-':
        return x - y;
        break;
    case '+':
        return x + y;
        break;
    case '*':
        return x * y;
        break;
    case '/':
        return x / y;
        break;

    default:
        break;
    }
    return 1;
}