0

并感谢您查看这篇文章。我的编程需要一些帮助。我曾经用 turbo pascal 编译,现在我正在学习 C++。这就是问题所在。
我想用这样的输入和输出做一个数学的东西。
输入(伪代码):

Var a,b:=int; op:=char;
readln(a);
readln(b);
case op of
"+" : write(a+b);
"-" : write(a-b);
">" : if a>b then write("true"); else write("false"); 

我曾尝试像这样在 C++ 中执行此操作,但无法编译。我没有把 include 放在这里,因为我真的不明白为什么它变得粗体。我写了这样的东西。

void main()
{
    int a,b,c;
    char op;
    std::cin>>a>>op>>b;
    switch (c){
    case (std::cin>>op == "+") :{
        c=a+b;
        std::cout<<c<<std::endl;
                           }
    }
}

这是错误

1>test03.cpp(10): error C2051: case expression not constant

1>test03.cpp(14): warning C4060: switch statement contains no 'case' or 'default' labels
谁能帮帮我?谢谢。

4

2 回答 2

3

您没有为 c 分配任何值,当您想在 switch 块中使用它时,它包含垃圾。

我想你想写

switch(op)

case '+'
于 2013-05-26T12:56:21.720 回答
1

你并没有离题太远。编译器会准确地告诉您问题所在。您必须在 case 表达式中使用常量。

您还有其他一些问题,并且您没有错误处理。

但是为了帮助你开始,试试这个......

void main()
{
    int a, b, c;
    char op;

    std::cin >> a >> op >> b;

    switch(op){
    case '+':
        c = a + b;
        break;
    }

    std::cout << c << std::endl;
}
于 2013-05-26T13:10:07.047 回答