c - 我不明白为什么这个 for 循环以 1 结尾。为什么不是 0 或 -1 或其他
问题描述
我认为这将是一个无限循环,因为 i 的值递减。但是循环在返回 1 时停止。为什么?
int i ;
for (i = 5; i; i--){
printf("%d\n",i);
}
return 0;
}
解决方案
在 C 中,条件中使用的任何非零整数或非空指针的计算结果为真,任何零值或空指针的计算结果为假。因此,例如:
if (5) {
printf("This always executes.\n");
}
if (0) {
printf("You will never see this.\n");
}
在你的情况下,循环是
for (i = 5; i; i--) {
/* ... */
}
循环条件为i
,意思是“循环whilei
不为零,stop oncei
变为零”。结果,一旦i
下降到零,循环就会停止运行。这意味着您最后一次看到循环运行是 when i = 1
,因为在那之后它下降到零。
推荐阅读
- vue.js - Vue动态添加元数据到内部组件
- git - git pull 后合并冲突:忘记本地版本,取远程版本……怎么样?
- java - 当我点击 TextView 应用程序关闭
- spring-boot - 使用 Java Spring Boot 时更改 HTML5 视频源
- android - 如何在 Android Studio 的 Google 地图中将标记添加到特定位置?
- javascript - React 组件中的递归函数调用
- r - 根据R中的长度从列表中选择元素
- python-3.x - matplotlib:获取 x 轴上的值,其中 y 轴的水平线与曲线相交
- vue.js - 如何在 v-for nativescript vue 内部刷新
- python - 如何删除列表python中的特定项目词?