int num = 100; switch( num ) { case 50: num = 100; case 100: num = 50; default: num = 200; } printf("%d\n", num); A.case100的50 B.csae50的100 C.default的200 D.原来的100
时间: 2024-01-18 13:04:06 浏览: 80
根据switch语句的执行规则,num的值会被依次和每个case后面的值进行比较,如果匹配成功就执行该case后面的语句,如果没有匹配成功则执行default后面的语句。但是在这个问题中,由于case 50没有break语句,所以当num等于100时,会依次执行case 100和default后面的语句,导致num的值最终变为200。因此,正确答案是C.default的200。
相关问题
public static int getValue(int num) { switch (num) { case 1: yield 10; case 2: return 20; default: return -1; } }
抱歉,我之前给出的答案是错误的。在Java中,`yield`不能在`switch`语句中使用。在你提供的代码中,`yield 10;`会导致编译错误。
在Java中,`yield`关键字只能在协程(Coroutine)中使用,用于让出当前协程的执行权。协程是一种轻量级的线程,可以在执行过程中暂停、恢复和传递控制权。
如果你想要在`switch`语句中返回一个值,应该使用`return`关键字,而不是`yield`。修正后的代码应该如下所示:
```java
public static int getValue(int num) {
switch (num) {
case 1:
return 10;
case 2:
return 20;
default:
return -1;
}
}
```
在上述代码中,根据不同的条件,使用`return`关键字返回不同的值。这样可以正确地从方法中返回一个值,并终止方法的执行。对于以上代码,如果传入的`num`为1,则返回10;如果为2,则返回20;否则返回-1。
public class Demo { public static void main(String args[]) { char c = 'A' ; int num = 10 ; switch(c) { case 'B' : num ++ ; case 'A' : num ++ ; case 'Y' : num ++ ; break ; default : num -- ; } System.out.println(num) ; }
这段代码的输出结果是 12。
原因是在 switch 语句中,根据变量 c 的值进行分支判断。首先,c 的值为 'A',进入 case 'A' 分支,执行 num++,此时 num 的值为 11。接着,没有 break 语句,继续执行 case 'Y' 分支,执行 num++,此时 num 的值为 12。因为有 break 语句,跳出 switch 语句,输出 num 的值为 12。