c - 我不明白 while 循环中发生了什么。你能解释一下吗?
问题描述
#include <stdio.h>
int main() {
int i = 10;
while (i++ != 0);
printf("%d", i);
}
输出:1
我不明白while
循环。
解决方案
i
递增直到int
变量饱和(当 int 为 16 位长时为 32767),然后开始从 -32.768 向上计数到零。当i
变为零时,while 循环停止。由于 post increment i++
,i
将在 while 循环完成时为一。因此,您会得到一个打印到输出的结果。
编辑:长解释:
第一次执行while条件时,会检查10是否不等于0。这次检查后,i
递增到11,下一次检查11不等于0,i
变成12。这样继续直到达到 的最高可能值int
。当这个最大值增加时,您会得到可能的最低值,但这也不等于零。所以条件仍然成立,但现在你有一个负数,并且负数递增将变为零。因此,一段时间后,i
变为 0 并且 while 条件为假,并且由于i
在此检查后递增,您将得到输出 1。
推荐阅读
- laravel - 显示 Laravel artisan 命令输出(从另一个命令调用的命令)
- c# - “Microsoft.TeamFoundation.VersionControl”类的 VSTS 替代方案是什么?
- python - 线性回归中多个变量的p值如何计算?
- c++ - 查询 CL_DEVICE_MAX_WORK_ITEM_SIZES
- javascript - 当向下滚动时从一个切换到另一个时,为标题中的徽标添加淡入/淡出效果
- mysql - MySQL正则表达式 - 不以元音开头也不以元音结尾
- c# - Sqlite 在 C# 中将数据库移动到内存
- python - “将温度从 f 转换为 c”在 def 中不起作用
- powershell - Powershell 添加重复的 IIS 应用程序池
- django - Django Match-team-player 关系玩家选择