创建一个程序,要求用户对两个号码,有三个可能的答案。代码编译没有。数(作为int)

问题描述 投票:-5回答:1

所以,我最近与C ++和一个挑战是开始创建一个程序,要求对两个数字,它要么好像在说;的号码中的一个是正的,两者都是正的或既不是正的。我试图使一个开关结构没有如果的,但它似乎没有工作了。这里是我的代码。

#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主()':

[错误]“编号”不能出现在恒定表达

[错误]“编号2”不能出现在恒定表达

[错误]的函数调用不能出现在一个常数表达式

[错误]“编号”不能出现在恒定表达

[错误]“编号2”不能出现在恒定表达

[错误]的函数调用不能出现在一个常数表达式

[错误]“编号”不能出现在恒定表达

[错误]“编号2”不能出现在恒定表达

[错误]的函数调用不能出现在一个常数表达式

[错误]“编号”不能出现在恒定表达

[错误]“编号2”不能出现在恒定表达

[错误]的函数调用不能出现在一个常数表达式

c++
1个回答
1
投票

您正在运行到的问题是,在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做你想要什么,这是无法实现的switch

在开关语句有些多看书:http://www.tutorialspoint.com/cplusplus/cpp_switch_statement.htm

© www.soinside.com 2019 - 2024. All rights reserved.