[英]How increment operator works in switch case?
它输出case 10:
输出case 10:
但如何打印x=11
? 在那一行之后,它会增加x
的值
int x = 10;
switch (x++) {
case 10:
System.out.println("case 1 ::: "+x);
break;
case 11:
System.out.println("case 2 ::: "+x);
break;
default:
System.out.println("default ::: "+x);
}
OUTPUT
case 1 ::: 11
后增量操作x++
增量x
,但返回的前值x
- 10
。 因此, switch
语句获取值10
(即x++
表达式的值),并执行case 10:
的块,此时System.out.println("case 1 ::: "+x);
打印x
- 11
的增量值。
您的问题“它在哪一行之后增加x的值?” 显示您完全缺少增量运算符的地方。
它立即增加该值。 增量不会延迟到任何语句结束。
例如,如果x = 10
,则语句y = x++ + x++ + x++
将计算y = 10 + 11 + 12
并得出y = 33
和x = 13
。
相反,语句y = ++x + ++x + ++x
将计算y = 11 + 12 + 13
并得出y = 36
和x = 13
。
如您所见,后递增和前递增运算符都会立即影响要递增的变量的值。 区别在于表达式是使用增量之前(之前)还是之后(之后)的值。
有关更复杂的示例,请参见以下答案: 增量逻辑
X ++是后递增的。 这样,将x(10)的初始值用于开关,然后只有在此之后才递增。
这就是为什么您有案例1然后是案例11的原因
switch
语句的x=10
与情况1匹配,后加增量运算符同时将其值加1,因此x
变为11
。 这就是为什么要得到结果case 1 ::: 11
在后增量中,首先评估交换机,然后仅递增x。 如下...
x = 10;
switch (x++){...}
switch
将首先被评估。
案例10:将被选中。 然后,只有x
会增加1 ( x
变为11)。
然后执行case块中的语句(o / p将== case 1 ::: 11)
//希望通过与预递增条件进行比较,您可能会变得更加清晰
x = 10;
switch (++x){...}
x
将首先递增 。( x
变为11)
然后评估开关条件
案例11:将被选中。
然后执行case块中的语句(o / p将== case 2 ::: 11)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.