Switch case with logical operator in C

假装没事ソ 提交于 2019-12-01 17:12:09
Jeyaram
case 1||2:

Becomes true. so it becomes case 1: but the passed value is 2. so default case executed. After that your printf("I thought somebody"); executed.

do this:

switch(suite){
  case 1:/*fall through*/
  case 2: 
    printf("Hi");
...
}

This will be a lot cleaner way to do that. The expression 1||2 evaluates to 1, since suite was 2, it will neither match 1 nor 3, and jump to default case.

case 1||2:

Results in

case 1:

because 1 || 2 evaluates to 1 (and remember; only constant integral expressions are allowed in case statements, so you cannot check for multiple values in one case).

You want to use:

case 1:
  // fallthrough
case 2:

You switch on value 2, which matches default case in switch statement, so it prints "hello" and then the last line prints "I thought somebody".

case (1||2):
  printf("hi");

Just put brackets and see the magic.

In your code,the program just check the first value and goes down.Since,it doesn't find 2 afterwards it goes to default case.

But when you specific that both terms i.e. 1 and 2 are together, using brackets, it runs as wished.

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!