所以,我最近与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”不能出现在恒定表达
[错误]的函数调用不能出现在一个常数表达式
您正在运行到的问题是,在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
关键字后使用变量。所以你需要使用if
s做你想要什么,这是无法实现的switch
。
在开关语句有些多看书:http://www.tutorialspoint.com/cplusplus/cpp_switch_statement.htm