while(++ i< -j)&而(ⅰ++

时间:2015-04-17 03:46:52

标签: java

我在下面的程序中尝试找到两个号码之间的中点

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)?

如果有人有任何想法,请解释我。

5 个答案:

答案 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