class Example{
public static void main(String args[]){
int x=99;
if(x++==x){
System.out.println("x++==x : "+x); //Why this code line is not run?
}
if(++x==x ){
System.out.println("++x==x : "+x);
}
}
}
Run Code Online (Sandbox Code Playgroud)
为什么第一条语句没有println执行?
表达式的操作数从左到右进行计算。
在表达式 中x++ == x,首先x++计算。它增加x,1但返回 的原始值x。于是x++返回99。
然后x进行求值,返回100(因为它增加了x++)。
由于99不等于100,因此该条件的计算结果为false。
如果将表达式更改为x==x++,您将得到true。
i++和之间的区别++i非常简单。
i++- 意味着首先获取值,然后递增它以供进一步使用++i- 意味着首先递增值并使用递增后的值跟随托运人x++ == x意味着以下内容:
x = 99作为左操作数并在表达式中使用它x,从而x == 100x = 100作为正确的操作数(注意它已经递增)99 != 100跟随托运人++x == x意味着以下内容:
x = 99作为左操作数x并因此x == 100在表达式中使用它x = 100作为正确的操作数(注意它已经递增)100 == 100你可以看到所有这些逻辑。例如,没有经验的开发人员无法知道这些细节。因此,最佳实践是避免表达式中出现此类增量。只需在单行中的表达式之前执行即可。在这种情况下,逻辑将是直接的,并且你遇到的问题也会少得多。
| 归档时间: |
|
| 查看次数: |
91 次 |
| 最近记录: |