java - 循环比我预期的多运行一次
问题描述
class BlankIt{
public static void main(String[] args) {
int i = 10, j = 20;
while(i++ < --j){
System.out.println("\n " + i + " " + j);
}
System.out.println("\n " + i + " " + j);
}
}
前面的输出是16 14
. 为什么会这样??当条件达到时循环停止15 < 15
。请帮帮我!!
解决方案
的增量i
,作为后增量,将在比较评估之后发生,j
另一方面,作为预减量,将在比较评估之前发生:
10 < 19 (true)
11 < 18 ...
12 < 17 ...
13 < 16 ...
14 < 15 ...
15 < 14 (false)
在最后一次比较的评估之后,i
将再增加一次,并将具有 的值16
,j
因为它已经减少了,所以将保留14
。
推荐阅读
- javascript - 通过共享消息队列的异步回调
- python - 从字典中存在的列表值中获取单个“集合”对象
- r - 重新启动的组计数器(使用 R data.table)
- exception - Racket:如何为异常启用源位置跟踪?
- ssh2-sftp - 使用 npm ssh2-sftp-client 将文件从 SFTP 服务器位置下载到 Node js 中的本地计算机
- xamarin - Xamarin 将 ios webview customRenderer 形成为基本身份验证
- shell - 从命令行快速查找结构化文本数据?
- julia - 特征值问题
- r - 面板回归中的不定矩阵警告
- javascript - document.activeElement - 不同的浏览器行为