假设我有以下代码:
int x = 5;
System.out.println(x++); // Will print 5
System.out.println("Random code"); // Will write "Random code"
System.out.print(x): // Will write 6我的问题是:在哪一行上x实际上是递增的?就在后缀之后?还是就在变量按顺序调用之前?
我听说过序列点与后缀和前缀运算符有关。这就是我问的主要原因。
发布于 2015-10-16 18:30:32
x的值将在打印后立即递增(在本例中)。所发生的情况是对变量执行比较/打印/某些其他操作,然后在这种操作之后直接递增。如果您有类似于int z = 0; if (1 > z++) { system.out.println (z) }的东西,也会发生同样的事情,它会打印1。
编辑: java中没有序列点。有关更多信息,请阅读以下内容:sequence point concept in java
发布于 2015-10-16 18:28:48
后缀表单首先返回表达式的当前值,然后对该值执行增量操作。因此,它将在第5行本身上递增。
这方面的一个例子是经典的for循环:
for (int i = 0; i<10; i++)
{
//something
}我们通常是hear that i++ could be replaced by ++i ,因为for-循环的第三个条件语句是在那里计算的。
因此,如果是i = 5,它就会在语句本身上增加到6,然后继续到for-循环的主体。如果后缀的行为使i在下一次被访问时才会增加,那么i将保留5次循环迭代,这与执行++1完全不同。
发布于 2015-10-16 18:29:34
当你写代码的时候
x++它为您返回x值,并将x增量为1。
所以它在5号线上增加了。
https://stackoverflow.com/questions/33177196
复制相似问题