使用开关和“?:”测试正/负的C ++代码

时间:2015-01-27 03:07:19

标签: c++

我的任务是编写一个代码,用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;
}   

1 个答案:

答案 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语句:

  • switch语句中使用的表达式必须具有整数或 枚举类型,或者是类具有的类类型 单个转换函数为整数或枚举类型。
  • 您可以在交换机中包含任意数量的案例陈述。每个案例 之后是要与之比较的值和冒号。
  • 案例的常量表达式必须与数据类型相同 交换机中的变量,它必须是常量或文字。
  • 当接通的变量等于大小写时,
    该案件之后的陈述将执行,直到休息陈述为止 到达了。
  • 当达到break语句时,开关终止,并且 控制流程跳转到开关后的下一行 言。
  • 并非每个案例都需要包含休息时间。如果没有出现中断,则 控制流将落到后续案件中,直到休息为止 到达了。
  • 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;
}