c++ - Switch 语句未按预期执行

标签 c++

<分区>

输入正确的总金额。任何帮助将不胜感激,谢谢。

    #include <iostream>

    using namespace std;

    int main()
    {
        float cost2 = 0;
        char ch;

        cout << "1. Water \t\tRs.10" << endl;
        cout << "2. Cola \t\tRs.20" << endl;
        cout << "3. Lemonade \t\tRs.15" << endl;
        cout << "Enter your choice: " << endl;

        cin >> ch;
        switch(ch) {
        case 1: {
            cost2 += 10; // trying to add 10 if input (ch) is 1
            break;
        }
        case 2: {
            cost2 += 20;
            break;
        }
        case 3: {
            cost2 += 15;
            break;
        }
    }
    cout << "The total before tax is: Rs." << cost2 << endl;
}

最佳答案

改变:

case 1: {

到:

case '1': {

并且对所有情况都执行相同的操作,因为 ch 变量的类型是 char。因此,您应该将其与字符进行比较。当你说 case 1 时,你可以想象它就像在说 if(ch == 1),这是没有意义的。您希望 1 在 if 条件中获得预期结果。 switch 语句也是如此。

关于c++ - Switch 语句未按预期执行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53564210/

相关文章:

c++ - 在不同的线程中执行每个QTModbus响应

c++ - 检查类是否等于模板实例或普通类

c++ - 有没有办法在调用方法之前断言对象是否已正确构造?

c++ - C++中的无限循环

c++ - 常量存储 C++?

c++ - 使用可变参数模板将 vector 中的参数应用于函数时出现奇怪错误

c++ - 从 istringstream 读取时的意外行为

c++ - 子输出出现在主进程使用 system() 调用它之前

c++ - 将多个字符串作为一个字符串读取? C++

使用 Boost 对复杂数据进行 C++ 序列化