gpt4 book ai didi

C++ 编程错误 : expected unqualified-id before "{" token

转载 作者:太空宇宙 更新时间:2023-11-04 14:35:05 24 4
gpt4 key购买 nike

我是 C++ 的新手,我正在尝试制作一个“计算器”,它:将两个数字相加,将两个数字相减,将两个数字相乘,将两个数字相除,取一个数的正弦,取一个数的余弦数,或取数的正切。这是代码:

#include <iostream>;
#include <cmath>;
#include <string>
int main ()
{}
int ask(std::string operation);
{
std::cout<<"Type Addition, Subtraction, Multiplication, Division, Sine, Cosine, or Tangent:\n";
std::cin>>operation;
if (operation="Addition")
{
goto Add
}
float Add(float addend1, float addend2, float answer)
{
Add:
std::cout<<"Insert the first number to be added:\n";
std::cin>>addend1;
std::cout << "Insert the second number to be added:\n";
std::cin>>addend2;
answer=addend1+addend2;
std::cout<<addend1<<"+"<<addend2<<"="<<answer<<"\n";
break
}
}

后面会有更多的功能,但我的问题是在第7行。有一个错误说:expected unqualified-id before "{"token。我知道我的缩进很糟糕,但谢谢!

最佳答案

您的代码中有很多问题。

首先,正如 Ivan 指出的那样,您试图在函数内部定义一个函数(ask() inside main())。那是无效的。

其次,您有一个 goto(为什么?!)试图跳转到另一个函数中的标签。我怀疑你的编译器甚至会允许这样做,但你希望它如何工作?您正在尝试使用传递给您的函数 addition 的变量,这些变量不存在,因为您从未调用该函数并且从未为其设置堆栈。这是不好的,不要这样做,只要正确调用函数即可。

第三,#include 预处理器指令以换行符结束,而不是分号。这可能会导致一些(相对)难以追踪的编译错误。

第四,您错误地尝试将 const char* "Addition" 分配给 operation 而您打算使用的是相等性运算符 ==。不过,这不会起作用,因为 operation 是一个 r 值,不能像这样分配给它。如果你想修改它,你需要将它声明为一个指针,但是再一次,这不是你在语义上想要的......

如果您想比较字符串并且(无论出于何种原因......)打算使用指向 char 的指针,那么您应该使用 strcmp .也就是说,您在 C++ 领域,所以只需使用 std:string 即可。

尝试这样的事情。无论如何我都没有增强你的代码,只是让它可以编译和运行。我做了一些改变。

除了消除一些语法错误外,您原来的 Add 函数将结果作为 float 参数。从函数内部分配给它只会修改一个拷贝。如果您希望调用者看到修改后的值,则需要获取指针或引用,但您根本不需要它,因为您可以简单地返回结果。

字符串比较区分大小写,因此您可能希望将其更改为不区分大小写。我假设这里没有本地化 :)。我也没有对输入执行错误检查,因此请注意,如果用户输入的不是有效 float ,它可能会失败。

#include <iostream>
#include <string>

using namespace std;

void Ask();
float Add( float, float );

int main( size_t argc, char* argv[] )
{
Ask();
return 0;
}

void Ask()
{
cout << "Type Addition, Subtraction, Multiplication, Division, Sine, Cosine, or Tangent:\n";

string operation;
cin >> operation;

if( operation == "Addition" )
{
float first = 0, second = 0;
cout << "enter first operand";
cin >> first;

cout << "enter second operand";
cin >> second;

cout << "The result is: " << Add( first, second );
}
}

float Add( float first, float second )
{
return first + second;
}

关于C++ 编程错误 : expected unqualified-id before "{" token,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6404547/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com