【问题标题】:What will be the output of program - switch case?程序的输出将是什么 - switch case?
【发布时间】:2015-07-01 19:43:48
【问题描述】:
int main() {
    int i = 1 ;
    switch( i==2) { /* This line */
        case  0: printf("zero "); break;
        case  1: printf("one "); break;
        case  2: printf("two "); break;
        default: printf ("what?"); break;
   }
}

输出会是什么?我无法理解 switch 括号中的表达式。

【问题讨论】:

  • 运行它,看看它打印了什么,然后分析它为什么会这样?
  • 了解 C 中的布尔/逻辑表达式。
  • 试试看:ideone.com/IwUIZf
  • 你认为==2 在 switch 语句中会做什么?最初的意图是否只是为了打开i 的值?
  • @abelenky returnmain(但不是在其他函数中)是可选的。在 C99 中,如果您省略它,它将返回 0。

标签: c switch-statement


【解决方案1】:

i 不等于21 (true) 时,表达式i==2 仅计算为01 - 到0 (false) i 等于 2。 switch 语句下的其他情况没用。

在您的情况下,i 的值设置为1i==2 的计算结果为0。因此,您应该得到zero 作为您的输出。

【讨论】:

  • 为了完整起见,您应该提到布尔运算符(例如 '==')在 false 时评估为 0,在 true 时评估为 1。
【解决方案2】:

您在 switch case i==2 中使用布尔表达式将始终导致 1(True) 或 0(False)。不需要使用case 2:default: 语句。

现在在执行 switch 表达式时,i==2 将跳转到 case 0,因为 i=1 并且您正在检查它是否等于 2。

因此将导致 false,在 C 编程的情况下为 0。最后打印

【讨论】:

    猜你喜欢
    • 2021-12-08
    • 1970-01-01
    • 2013-09-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多