c - 当未声明的变量被传递给 for 循环并改变 for 循环的语法时会发生什么
问题描述
// 例子
#include<stdio.h>
int main(){
int i,j;
for(i<4; j=3; j=0){
printf("%d",i);
}
}
// 为什么输出是 i=1 的无限 for 循环
解决方案
由于for
形式循环
for (initialization; condition; increment) {/*body*/}
可以转换为while
循环,如下所示:
{
initialization;
while (condition)
{
/*body*/
increment;
}
}
您的程序可以有效地转换为:
int i,j;
{
i<4;
while (j=3)
{
printf("%d",i);
j=0;
}
}
由于赋值运算符返回已分配的值(在本例中为:3
),并且任何非零整数值都被计算为true
,因此您将获得一个无限循环。
至于你得到什么输出......这是未定义的行为,因为你使用了 uninitialized variable i
。
推荐阅读
- mysql - 连接表上的mysql更新是否一致?
- neo4j - neo4j - 返回单个节点实例 - 按属性查询?
- google-chrome-extension - Chrome 中的 openerTabId 更改为未定义
- serial-port - 计算 3964r 串行通信协议的 BCC
- c# - Json序列化在根处添加字符串元素
- html - 如何在 flexbox flex-column 类 div 中将高度设置为高于 100%?
- python - Django - 与过滤器相关的计数
- c - 我需要一种在 C 中两次读取浮点数的方法。每次都以
-d - java - 传递给新窗口的 JavaFX 参数变为 NULL
- python - Python 3:将变量的变化值传递给导入的函数库中的函数