繁体   English   中英

增量运算符在切换情况下如何工作?

[英]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 = 33x = 13

相反,语句y = ++x + ++x + ++x将计算y = 11 + 12 + 13并得出y = 36x = 13

如您所见,后递增和前递增运算符都会立即影响要递增的变量的值。 区别在于表达式是使用增量之前(之前)还是之后(之后)的值。

有关更复杂的示例,请参见以下答案: 增量逻辑

X ++是后递增的。 这样,将x(10)的初始值用于开关,然后只有在此之后才递增。

这就是为什么您有案例1然后是案例11的原因

switch语句的x=10与情况1匹配,后加增量运算符同时将其值加1,因此x变为11 这就是为什么要得到结果case 1 ::: 11

增量中,首先评估交换机,然后仅递增x。 如下...

x = 10;
switch (x++){...}

switch将首先被评估。

案例10:将被选中。 然后,只有x会增加1x变为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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM