c - 与“for循环”输出混淆
问题描述
我有一个非常基本的 C 程序,并对其输出感到困惑:
#include<stdio.h>
int main() {
int i;
char s[] = "K";
for(i=0; s[i]; i++); {
printf("%d ", i);
printf("%c ", s[i]);
}
}
它将 i 值输出为 1,但根据该线程的答案之一: 循环中预增量和后增量之间的差异?
int i = 0; // Initialization
loopStart:
if (i < 5) // Condition
{
Output(i);
i++ or ++i; // Increment
goto loopStart;
}
在 Output(i) 之后发生增量(相当于 printf("%d ", i);),那么 i 的值是 1 而不是 0?
解决方案
这是因为;
在for循环之后
for(i=0; s[i]; i++);
去掉分号就可以了。
for(i=0; s[i]; i++)
这是因为分号将被视为语句的结尾,并且您printf
不是循环的一部分,并且将在循环执行完成后执行。
推荐阅读
- git - 如何将本地存储库上的附加文件添加到现有的远程存储库
- javascript - 我可以将 uk-offcanvas-close、uk-close 中的图标替换为 chevron-right 吗?
- php - move_uploaded_file() 需要 2 个参数,3 个给定
- scheme - Common Lisp 和 Scheme 的常用词汇
- c++ - 如何修复运行时错误:引用绑定到“value_type”类型的空指针(stl_vector.h)?
- spring-boot - 如何为 SecurityFilterAutoConfiguration 配置 DispatcherType?
- keras - 如何在 keras 中标记 cnn 并使用 mse 指标
- reactjs - Hook 不会重新渲染组件
- floating-point - 我需要从一个浮点数中选择某些数字。是否可以?如果是,如何?
- markdown - 生成 PDF 时出错。未定义的控制序列