首页 > 解决方案 > 创建一个程序,要求用户输入两个数字并具有三个可能的答案。代码未编译。数字(作为整数)

问题描述

所以我最近开始使用 C++,其中一个挑战是创建一个程序,它要求输入两个数字,它必须说是否;其中一个数字是正数,要么都是正数,要么都不是正数。我试图制作一个没有 if 的开关结构,但它似乎没有成功。这是我的代码。

#include <iostream>
using namespace std;

int main()
{
    int number;
    int number2;

    cout <<"Introduce two numbers:" ;
    cin >> number, number2;
    switch(number)
    {
    case (number > 0) (number2 > 0): cout <<"Both numbers are positive.";
    break;
    case (number > 0) (number2 < 0): cout <<"One of the numbers is positive.";
    break;
    case (number < 0) (number2 > 0): cout <<"One of the numbers is positive.";
    break;
    case (number < 0) (number2 < 0): cout <<"None of the numbers are positive.";
    break;
    default: cout <<"It must be a number.";
}
    return 0;
}

我得到的编译错误如下。在函数'int main()'中:

[错误]“数字”不能出现在常量表达式中

[错误] 'number2' 不能出现在常量表达式中

[错误] 函数调用不能出现在常量表达式中

[错误]“数字”不能出现在常量表达式中

[错误] 'number2' 不能出现在常量表达式中

[错误] 函数调用不能出现在常量表达式中

[错误]“数字”不能出现在常量表达式中

[错误] 'number2' 不能出现在常量表达式中

[错误] 函数调用不能出现在常量表达式中

[错误]“数字”不能出现在常量表达式中

[错误] 'number2' 不能出现在常量表达式中

[错误] 函数调用不能出现在常量表达式中

标签: c++

解决方案


您遇到的问题是switch语句中的案例只能采用常量。

例如这是有效的:

switch (number)
{
case 0:
    // Do something because number is 0
    break;
case 1:
    // Do something because number is 1
    break;
case -5:
    break;
//etc...
}

基本上你不能在case关键字之后使用变量。因此,您需要使用ifs 来做您想做的事情,而使用 s 是不可能的switch

更多关于开关语句的阅读: http ://www.tutorialspoint.com/cplusplus/cpp_switch_statement.htm


推荐阅读