我在下面的程序中尝试找到两个号码之间的中点
class FindMidPoint
{
public static void main(String args[])
{
int i, j;
i = 100;
j = 200;
// find midpoint between i and j
while(++i < --j) ;
System.out.println("Midpoint is " + i+" OR "+j);
}
}
输出:
Midpoint is 150 OR 150
But If I make changing in while condition that is
while(i++<j--)
Then output is:
Midpoint is 16 OR 14
我也参考下面的链接然后我也不理解++ i&amp; i ++在这个程序中。
what is the difference between i++ & ++i in for loop (Java)?
如果有人有任何想法,请解释我。
答案 0 :(得分:0)
如果你有i = 1且j = 2.第一个比较2&lt; 1和第二个比较1&lt; 2.(在第一个中,减量/增量在比较之前完成,而在第二个中,它们在比较之后完成)
答案 1 :(得分:0)
表达式中存在的任何变量之前的++
表示必须在表达式执行之前进行增量。
例如
int i=2;
int x = ++i + 2
这里因为++
出现在i之前,所以首先在 i 上会有一个增量,然后表达式将被执行。
涉及的步骤是:
第1步:
++i : i=(i+1) = 3
步骤2:
int x = ++i + 2 = 3+2=5
在此表达式执行后: x = 5且i = 3
但如果你考虑增加后期:
例如:
int i=2;
int x = i++ + 2;
这意味着在执行该行之后会发生增量。 步骤是:
第1步:
int x = i++ + 2 = 2 + 2 =4; // i is still 2 here since the increment didn't happen by now
第2步:
i++ : i=i+1 = 3;
执行后 x = 4且i = 3
答案 2 :(得分:0)
++i
您可以考虑增加值,然后使用表达式
中的递增值i++
在表达式增加之前使用表达式中的值
假设我们有以下代码:
int i = 100;
int j = ++i + 50; // statement 1
此处j
的值为151,首先表示增量i
,然后评估表达式,因此101 + 50.
让我们拥有
int j = i++ + 50; // statement 2
此处j
的值为150,表示首先计算表达式,然后递增值i
但是,执行第二个语句后,i
将为101
答案 3 :(得分:0)
它关于优先级,在java中每个运算符都有一个优先级,preincrement具有很高的预测性,而后增量最后与其他运算符相比。
答案 4 :(得分:0)
应在此处应用前后的基本区别。
预增量运算符++ i:相当于用i + 1替换i并在表达式中使用结果。
while(++i < --j);
//read as while( (i_new = i_old+1) < (j_new =j_old -1) );
//In next expression i will be value of i_new and j value will be j_new
后增量运算符i ++:相当于在当前表达式中使用相同的i值。并在下一个立即表达式中使用增加的值。
while(i++ < j--);
//read as while( (i_old < j_old );
//In next expression(even in next iteration of same above while) i will be value of i_old+1 and j value will be j_old-1