int a = 0, b = 0;
for (int i = 0; i < 5; i++) {
if (++a > 2 || ++b > 2) {
a++;
}
}
System.out.println("a= " + a + " b=" + b);
你能解释一下这个逻辑吗?
答案 0 :(得分:0)
i = 0 a = 1(第一个条件为假,因此第二个是检查)b = 1
i = 1 a = 2(第一个条件为假,因此第二个是检查)b = 2
i = 2 ++ a增量a,a = 3条件为真输入if条件且a变为4且b保持为2
类似地,i = 3 a = 6 b = 2并且i = 4 a = 8 b = 2;
如果编译器遇到真实条件时出现或(||)条件,则停止检查其他语句
答案 1 :(得分:0)
这是&amp; amp;的五次迭代和结果。 b终于。每一行都是循环中每次迭代的结果。
a b
--------
1 1
2 2
4 2
6 2
8 2
++a > 2 means increment a (by 1) first than compare with 2
++b > 2 means increment b (by 1) first than compare with 2
a++ means a=a+1; means increment a by 1.
答案 2 :(得分:0)
我认为您的混淆可能来自++a
vs a++
。所以基本上,它们都会将a
所携带的值增加1
,这意味着a = a + 1
。
差异是++a
将首先进行增量,然后进行比较,而a++
将首先进行比较,然后进行增量。
看看你的代码:
a
和b
,并实例化for
循环将迭代5次第一次迭代:
- 第4行:++a
---&gt; a == 1
,然后将其与2
进行比较,依此类推b
,此处表达式返回false
,因此请跳过第5行。
a= 1 b=1
第二次迭代:
- 第4行:++a
---&gt; a == 2
,然后将其与2
进行比较,依此类推b
,此处表达式返回false
,因此请跳过第5行。
a= 2 b=2
第三次迭代:(后来的迭代类似)
- 第4行:++a
---&gt; a == 3
,然后将其与2
进行比较,依此类推b
,此处表达式返回true
,因此现在就到达了第5行。
第5行:a++
---&gt; a == 4
第9行:此处打印出a= 4 b=3
希望有所帮助。
答案 3 :(得分:0)
++ a表示在操作之前a的当前值增加1(在这种情况下,它在比较a> 2之前将a的值增加1) a ++表示操作后a的当前值增加1。 (在这种情况下,增加a的值,虽然没有操作。)
for循环不被任何东西打断.....所以,它循环5次(i = 0,1,2,3,4)。
表示i = 0 - &gt; 当前值a = 0,当前值b = 0
if(++ a&gt; 2 || ++ b&gt; 2)
在此语句中,a在与2比较之前增加1.因此当前值为0并且增加1.新值为1。 现在比较a(1)和2 ....同样的事情发生在b。
if(1> 2 || 1> 2)
该陈述是错误的。所以转到结束语句的末尾。
表示i = 1 - &gt;当前值a = 1,当前值b = 1
与比较之前a的值增加1相同'a&gt; 2'和b。(新a = 2,b = 2)
if(2> 2 || 2> 2)
声明是假的。到if语句的末尾。
表示i = 2 - &gt;当前值a = 2,b = 2
将a增加1 - >比较之前a = 3且b = 3。
if(3> 2 || 3> 2)
如果条件成立。然后
一个++
语句执行。 a = 4的新值.b的值保持不变(3)。
表示i = 3 - &gt;当前值a = 4,b = 3 将a和b增加1个新值(a = 4,b = 4)
if(5> 2 || 4> 2)
真。然后
一个++
a = 6的新值,b保持不变(4)。
表示i = 4 - &gt;当前值a = 6,b = 4。 增加a和b(7,5)
if(7> 2 || 5> 2)
真。然后
一个++
a = 8的新值,b保持不变(5)。
for循环的结束(i <5条件失败)
下一个声明
System.out.println(“a =”+ a +“b =”+ b)
显示“a = 8 b = 5”