我的计算器程序有误C++
I've got an error for my calculator program C++
我试图为我的第一个c++项目之一制作计算器,但我得到了一个错误。
下面是我的代码:
#include <iostream>
#include <cmath>
using namespace std;
int a;
int b;
int sum;
int opp;
int yn;
int main()
{
cout << "Enter your first value" << endl;
cin >> a;
cout << "Type the number that corrosponds to your opperation n 1.add n 2.subtract n 3.mutipliy n 4.divide" << endl;
cin >> opp;
cout << "Choose your last value" << endl;
cin >> b;
return 0;
}
int action()
{
switch(opp)
{
case 1:
sum = a + b;
cout << "Your answer is " << sum << endl;
break;
case 2:
sum = a - b;
cout << "Your answer is " << sum << endl;
break;
case 3:
sum = a * b;
cout << "Your answer is " << sum << endl;
break;
case 4:
sum = a / b;
cout << "Your answer is " << sum << endl;
break;
case >> 5:
cout << "Type the number that corrosponds to your opperation n 1.add n 2.subtract n 3.mutipliy n 4.divide"
}
cout << "Would you like to use another oppperation? n Type the number that relates to the answer you want to choose n 1.Yes n 2.No" << endl;
cin >> yn;
if (yn = 1)
{
cout << "what would you like your nxt opperation to be? n 1.add n 2.subtract n 3.mutiply n 4.divide" << endl;
cin >> opp;
return 0;
}
}
我知道这不是最好的代码,但我更专注于让它工作。
如果有帮助的话,我得到的错误代码是:
1>------ Build started: Project: ConsoleApplication1, Configuration: Debug Win32 ------
1> calculator.cpp
1>c:users"my acount"documentsvisual studio 2013projectsconsoleapplication1consoleapplication1calculator.cpp(12): error C2365: 'yn' : redefinition; previous definition was 'function'
1> c:program files (x86)microsoft visual studio 12.0vcincludemath.h(1002) : see declaration of 'yn'
1>c:users"my account"documentsvisual studio 2013projectsconsoleapplication1consoleapplication1calculator.cpp(56): error C2059: syntax error : '>>'
1>c:users"my account"documentsvisual studio 2013projectsconsoleapplication1consoleapplication1calculator.cpp(61): error C2679: binary '>>' : no operator found which takes a right-hand operand of type 'double (__cdecl *)(int,double)' (or there is no acceptable conversion)
1> c:program files (x86)microsoft visual studio 12.0vcincludeistream(485): could be 'std::basic_istream<char,std::char_traits<char>> &std::basic_istream<char,std::char_traits<char>>::operator >>(std::basic_streambuf<char,std::char_traits<char>> *)'
1> c:program files (x86)microsoft visual studio 12.0vcincludeistream(466): or 'std::basic_istream<char,std::char_traits<char>> &std::basic_istream<char,std::char_traits<char>>::operator >>(void *&)'
1> c:program files (x86)microsoft visual studio 12.0vcincludeistream(448): or 'std::basic_istream<char,std::char_traits<char>> &std::basic_istream<char,std::char_traits<char>>::operator >>(long double &)'
1> c:program files (x86)microsoft visual studio 12.0vcincludeistream(430): or 'std::basic_istream<char,std::char_traits<char>> &std::basic_istream<char,std::char_traits<char>>::operator >>(double &)'
1> c:program files (x86)microsoft visual studio 12.0vcincludeistream(411): or 'std::basic_istream<char,std::char_traits<char>> &std::basic_istream<char,std::char_traits<char>>::operator >>(float &)'
1> c:program files (x86)microsoft visual studio 12.0vcincludeistream(392): or 'std::basic_istream<char,std::char_traits<char>> &std::basic_istream<char,std::char_traits<char>>::operator >>(unsigned __int64 &)'
1> c:program files (x86)microsoft visual studio 12.0vcincludeistream(373): or 'std::basic_istream<char,std::char_traits<char>> &std::basic_istream<char,std::char_traits<char>>::operator >>(__int64 &)'
1> c:program files (x86)microsoft visual studio 12.0vcincludeistream(353): or 'std::basic_istream<char,std::char_traits<char>> &std::basic_istream<char,std::char_traits<char>>::operator >>(unsigned long &)'
1> c:program files (x86)microsoft visual studio 12.0vcincludeistream(335): or 'std::basic_istream<char,std::char_traits<char>> &std::basic_istream<char,std::char_traits<char>>::operator >>(long &)'
1> c:program files (x86)microsoft visual studio 12.0vcincludeistream(317): or 'std::basic_istream<char,std::char_traits<char>> &std::basic_istream<char,std::char_traits<char>>::operator >>(unsigned int &)'
1> c:program files (x86)microsoft visual studio 12.0vcincludeistream(291): or 'std::basic_istream<char,std::char_traits<char>> &std::basic_istream<char,std::char_traits<char>>::operator >>(int &)'
1> c:program files (x86)microsoft visual studio 12.0vcincludeistream(272): or 'std::basic_istream<char,std::char_traits<char>> &std::basic_istream<char,std::char_traits<char>>::operator >>(unsigned short &)'
1> c:program files (x86)microsoft visual studio 12.0vcincludeistream(237): or 'std::basic_istream<char,std::char_traits<char>> &std::basic_istream<char,std::char_traits<char>>::operator >>(short &)'
1> c:program files (x86)microsoft visual studio 12.0vcincludeistream(218): or 'std::basic_istream<char,std::char_traits<char>> &std::basic_istream<char,std::char_traits<char>>::operator >>(std::_Bool &)'
1> c:program files (x86)microsoft visual studio 12.0vcincludeistream(211): or 'std::basic_istream<char,std::char_traits<char>> &std::basic_istream<char,std::char_traits<char>>::operator >>(std::ios_base &(__cdecl *)(std::ios_base &))'
1> c:program files (x86)microsoft visual studio 12.0vcincludeistream(204): or 'std::basic_istream<char,std::char_traits<char>> &std::basic_istream<char,std::char_traits<char>>::operator >>(std::basic_ios<char,std::char_traits<char>> &(__cdecl *)(std::basic_ios<char,std::char_traits<char>> &))'
1> c:program files (x86)microsoft visual studio 12.0vcincludeistream(198): or 'std::basic_istream<char,std::char_traits<char>> &std::basic_istream<char,std::char_traits<char>>::operator >>(std::basic_istream<char,std::char_traits<char>> &(__cdecl *)(std::basic_istream<char,std::char_traits<char>> &))'
1> c:program files (x86)microsoft visual studio 12.0vcincludeistream(1103): or 'std::basic_istream<char,std::char_traits<char>> &std::operator >><char,std::char_traits<char>,double(int,double)>(std::basic_istream<char,std::char_traits<char>> &&,_Ty (__cdecl &))'
1> with
1> [
1> _Ty=double (int,double)
1> ]
1> c:program files (x86)microsoft visual studio 12.0vcincludeistream(1093): or 'std::basic_istream<char,std::char_traits<char>> &std::operator >><std::char_traits<char>>(std::basic_istream<char,std::char_traits<char>> &,unsigned char &)'
1> c:program files (x86)microsoft visual studio 12.0vcincludeistream(1086): or 'std::basic_istream<char,std::char_traits<char>> &std::operator >><std::char_traits<char>>(std::basic_istream<char,std::char_traits<char>> &,unsigned char *)'
1> c:program files (x86)microsoft visual studio 12.0vcincludeistream(1079): or 'std::basic_istream<char,std::char_traits<char>> &std::operator >><std::char_traits<char>>(std::basic_istream<char,std::char_traits<char>> &,signed char &)'
1> c:program files (x86)microsoft visual studio 12.0vcincludeistream(1072): or 'std::basic_istream<char,std::char_traits<char>> &std::operator >><std::char_traits<char>>(std::basic_istream<char,std::char_traits<char>> &,signed char *)'
1> while trying to match the argument list '(std::istream, double (__cdecl *)(int,double))'
1>c:users"my account"documentsvisual studio 2013projectsconsoleapplication1consoleapplication1calculator.cpp(63): error C2659: '=' : function as left operand
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========
如果你能试着解释一下答案,这样我就可以从中学习了,因为这是我的第一个项目
-
int yn;
这里您重新声明了yn
,因为math.h
已经有一个名为yn
的变量:
extern double yn _PARAMS((int, double));
重命名yn
case >> 5:
错误,更改为case 5:
if (yn = 1)
将始终是true
,因为它是赋值操作而不是比较操作(==
)。重写为if (yn == 1)
根据错误信息,您的<cmath>
定义(或包含定义)称为yn
的东西。
由于您将std::
内部的所有内容都拉到全局命名空间(与using namespace std;
一起),因此您自己的yn
与std::
中的yn
发生冲突。
解决方案:停止使用using namespace std;
。
让我们来看看编译器的输出。
calculator.cpp(12): error C2365: 'yn': redefinition;之前的定义是'function'
includemath.h(1002):参见'yn'的声明
第一行告诉我们已经有了'yn'的定义被使用。第二行告诉我们在哪里:在您包含的math.h文件中。要解决这个问题,请选择main.cpp文件中'yn'的另一个名称(或者您可以删除"使用命名空间std"行,并在每次调用cout等的开头附加"std::",但我认为您不会知道在此阶段真正发生了什么)
calculator.cpp(56): error C2059:语法错误:'>>'
这只是说语法不正确,这是正确的。拿着那些<<从你的上一个"案例"中,让它看起来像你之前做过的每一个案例。案例5:"这可能只是你的一个简单的打字错误。
calculator.cpp(61): error C2679: binary '>>':找不到右操作数类型为'double (__cdecl *)(int,double)'的操作符(或者没有可接受的转换)
我认为这也是"yn"重新定义的结果,它将"yn"视为您不希望它成为的东西,并且在其上使用>>运算符没有意义。例如,您可能知道,您将在字符串上使用它。
之后,它似乎列出了你可以使用它的所有方法,这在大多数情况下对你来说并不重要。
calculator.cpp(63): error C2659: '=': function为左操作数
将赋值操作符(=)误认为比较操作符(==)。前者像您一直在做的那样赋值,而后者产生一个布尔值"真"或"假",用于(例如)if语句。您需要后者,因此将"="替换为"=="。
学会通读编译器的输出。它实际上说的是有用的东西,你只需要学会使用它。
- Mongodb c++驱动程序:如何查询元素的数组
- C++,系统无法执行指定的程序
- 在C++程序中输入的文本文件将不起作用,除非文本被复制和粘贴
- 在VS代码中交叉编译Windows与Linux上的MinGW的SDL程序
- C++ Windows 驱动程序MSB3030无法复制该文件,因为它找不到
- 重载操作程序时出错>>用于类中的字符串 memebr
- 获取日期异步信号安全吗?如果在信号处理程序中使用,它会导致死锁吗
- 试图在visual studio上用C++创建一个桌面应用程序
- 模板元程序查找相似的连续类型名称
- FFmpeg:制作一个应用程序比直接使用ffmepg更好吗
- 如何通过cpp程序运行shell脚本
- 有没有什么方法可以使用一个函数中定义的常量变量,也可以由c++中同一程序中的其他函数使用
- IPC使用多个管道和分支进程来运行Python程序
- 如何将c++程序的一些输出传递给shell,以便在shell中使用
- 使用C++程序合并排序没有得到正确的输出
- 基于boost的程序的静态链接——zlib问题
- 程序崩溃并显示"std::out_of_range"错误
- 在C应用程序中运行C++(带有STL)函数
- 使用mongocxx驱动程序时包含头文件问题
- 我的计算器程序有误C++