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);
你能解释一下逻辑吗?越来越混淆这个解释这个循环导致java
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);
你能解释一下逻辑吗?越来越混淆这个解释这个循环导致java
I = 0 = 1(第一条件是假,从而第二被检查)B = 1
I = 1个α= 2(第一条件是假,从而第二被检查)B = 2
i = 2 ++ a增量a,a = 3条件为真如果条件成立并且a变为4并且b保持为2
类似地i = 3 a = 6 b = 2并且i = 4 a = 8 b = 2;
在或(||)条件编译时遇到的真实情况就停止检查其他声明
情况下,这是五个迭代和结果的& 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.
我觉得你的困惑可能来自++a
VS a++
。基本上,他们两人都将a
的价值增加了1
,这意味着a = a + 1
。
所不同的是++a
先做增量再做比较,而a++
先做比较再增加。
所以看你的代码:
a
和b
,以及实例for
循环将重复5次第一次迭代: - 第四行:++a
--->a == 1
,然后将其与2
进行比较,依此类推b
,此处的表达式返回false
,所以跳过线5
a= 1 b=1
第二次迭代: - 第四行:++a
--->a == 2
,然后把它比作2
,所以对b
,这里的表达式返回false
,所以跳过线5
a= 2 b=2
第三次迭代:(后面的迭代中是相似的) - 第四行:++a
--->a == 3
,然后比较它2
,所以对b
,这里的表达式返回true
,所以在达到第5行现在。
5号线:a++
--->a == 4
9号线:在这里打印出a= 4 b=3
希望有所帮助。
++ a表示在操作前a的当前值增加1(在这种情况下,比较a> 2前a增加1)a ++表示a的当前值增加1次手术后。 (在这种情况下,增加a的值,尽管没有任何操作)。
For循环不被任何事件中断.....所以,它循环5次(i = 0,1,2,3 ,4)。
对于i = 0 - > 电流B的α= 0,电流值的值= 0
如果(++一> 2 || ++ B> 2)
在本声明中,a比1前增加1.因此,当前值为0并且增加1.新值为1. 现在比较a(1)和2 ....并且同样的事情发生在b。
如果(1> 2 || 1> 2)
该语句是假的。所以去结束语句的末尾。
对于i = 1 - = 1
相同的值之前增加1之前比较 '一> 2',并且还与B A = 1时,当前B的值的>当前值。 (新A = 2,b = 2)
如果(2> 2 || 2> 2)
语句是假的。到if语句的结尾。
对于i = 2 - >电流的= 2,B = 2
增加的1值 - >一个= 3,并且还B = 3之前进行比较。
如果(3> 2 || 3> 2)
如果条件为真。然后
一个++
语句执行。 a = 4的新值。b的值保持不变(3)。
对于i = 3 - >的电流值的= 4,B = 3 增加a和b由1倍新的值(α= 4,B = 4)
如果(5> 2 || 4> 2)
true。然后
一个++
A = 6,B的新值保持相同(4)。
对于i = 4 - >的电流值的= 6,B = 4 增加A和B(7,5)
如果(7> 2 || 5> 2)
为真。然后
一个++
一个= 8,b的新的值保持不变(5)。
的for循环结束(ⅰ< 5条件失败)
下一语句
的System.out.println( “A =” + A + “B =” + B)
显示“a = 8 b = 5”
你知道'++ a'和'a ++'之间的区别吗?如果是这样,你的逻辑问题是什么? – RealSkeptic
你得到的输出是什么,你期望的是什么? –
我建议你阅读并理解预增量和增量后的操作符是什么,然后在一张纸上手动执行该程序的空运行,然后用PC o/p计算结果。这将清除你的概念。实践是关键! –