我的任务是编写一个代码,用switch和“?:”来测试一个数字是正数,负数还是零。这就是我所拥有的。负值似乎不起作用,我无法弄清楚如何实现零。事实上,我真的不太了解整个case1,case2和switch语法以及它的工作原理。
#include <iostream>
using namespace std;
int main()
{
int a;
int b;
cout << "Please enter the value to be tested: ";
cin >> a;
(a > 0) ? (b = 1) : (b = 2);
switch (b)
{
case 1:
cout << "The given value is positive." << endl;
break;
case 2:
cout << "The given value is negative." << endl;
break;
}
return 0;
}
答案 0 :(得分:1)
切换声明:
switch语句提供了
if
时的便捷替代方法 处理多方分支。假设我们有一些整数值 称为测试,并希望根据是否进行不同的操作 它具有值1,5或任何其他值,然后是switch语句 可以使用
<强>语法:强>
switch(expression resulting to integer literals/integer literals/enumeration types/){
case constant-expression :
statement(s);
break; //optional
case constant-expression :
statement(s);
break; //optional
// you can have any number of case statements.
default : //Optional and one default statement can be present for a switch
statement(s);
}
以下规则适用于switch语句:
它的工作原理如下: -
break
语句通常在下一个要转移的案例标签之前添加
控制掉switch语句。 当您想要执行相同操作时,会发生一个有用的异常 处理两个或多个值。假设你想要值1和 10做同样的事情,然后: -
案例1: / *。 任何数量的案件 。 * / 案例10: //处理案例1到10的以下陈述 打破;
有效,因为test = 1的情况只是“通过”到下一部分。
有条件的接线员:
三元运算符(?:)是C和C ++中使用的非常有用的条件表达式。它的效果类似于if语句,但具有一些主要优点。
因此使用三元运算符的基本语法是:
(condition) ? (if_true) : (if_false)
基本上与:
相同if (condition)
if_true;
else
if_false;
因此,如果“condition”为真,则执行第二个表达式(“if_true”),否则执行第三个表达式(“if_false”)。
为你代码:
您可以使用任何一种方式查找,其中一种方式是
#define POSITIVE (1)
#define NEGATIVE (-(1))
#define ZERO (0)
switch ( ( user_input >= ZERO )? POSITIVE : NEGATIVE )
{
case POSITIVE:
if( user_input == ZERO )
{
cout << "The given value is a Zero." << endl;
}
else
{
cout << "The given value is positive." << endl;
}
break;
case NEGATIVE:
cout << "The given value is negative." << endl;
break;
}