基本增量

时间:2012-06-14 14:28:25

标签: java loops for-loop increment

我知道这是一个非常基本的问题但是。

我理解背后的概念。 n ++,++ n,n - , - n。无论其

public static void main(String[] args){

    int count = 1;
    for(int i =1;i<=10;++i){

    count = count * i;
    System.out.print(count);
    }
}

所以它将打印:1 2 3 4 5 6 7 8 9 10。

我的问题是。为什么如果i增加为++我不是因为我被视为2而不是1.设为++ i的点,在被另一个操作操纵之前增加i?

7 个答案:

答案 0 :(得分:11)

  

++ i的观点是,在被另一个操作操纵之前增加i吗?

++ii++之间的区别仅在它被用作更大表达式的一部分时才重要,例如

int j = ++i; // Increment then use the new value for the assignment
int k = i++; // Increment, but use the old value for the assignment

在这种情况下,操作发生在循环的每次迭代结束时,在其自己的上。所以你的循环相当于:

int count = 1;
// Introduce a new scope for i, just like the for loop does
{
    // Declaration and initialization
    int i = 1;
    // Condition
    while (i <= 10) {
        count = count * i;
        System.out.print(count);

        // Now comes the final expression in the for loop "header"
        ++i;
    }
}

现在最后将++i更改为i++根本不会产生任何影响 - 表达式的值不会用于任何事情。

答案 1 :(得分:3)

直到for循环的第一次迭代后才调用增量。

虽然这是真的

j = i++;
k = ++i;

返回不同的结果,将此上下文中的++i视为在每个for循环结束时调用的独立行。

答案 2 :(得分:0)

你想使用i ++这是一个后增量。 ++我被称为preincrement,其差异正如你所指出的那样。

答案 3 :(得分:0)

在这种情况下++i发生在循环结束时,它会递增,然后检查新值是否仍然符合终止条件。

此外,输出不会是:

count   i  
1   *   1 = 1
1   *   2 = 2  
2   *   3 = 6   
6   *   4 = 24  

答案 4 :(得分:0)

你写的for循环与:

相同
i = 1;
while(i<=10) {
  count = count * i;
  System.out.print(count);
  i = i + 1;
}

所以这就是原因!

答案 5 :(得分:0)

对于i = 0而I <0。 1 = 10, 打印我, 然后预先增加i。 (++ i / i ++在这里没有区别。)

这里试试这个:

int i=1;  
while(i <= 10)  
  System.out.print(++i);  


i = 1;  
while (i <= 10)  
  System.out.print(i++);

int i=1; while(i <= 10) System.out.print(++i); i = 1; while (i <= 10) System.out.print(i++);

答案 6 :(得分:0)

作为对其他答案的补充,偏好for(int i=1;i<=10;++i)优于for(int i=1;i<=10;i++)的历史原因是++i不需要将i的旧值存储在额外的变量。因此,++ii++快,但速度提升可以忽略不计。在现代编译器中,这种速度改进是作为优化完成的,因此这两个部分产生相同的编译器输出。但是,由于++i始终与i++一样快或更快(例如,在旧的C ++编译器上),因此许多有经验的程序总是在循环中使用++i

正如其他答案所述,两段代码在功能上是等价的(在for循环的情况下)。