关于堆栈溢出的第一个问题,让我们看看这有多好!
我无法理解为什么这段简单的c代码会导致无限循环。
#include <stdio.h>
#include <stdlib.h>
int main (void) {
float num=0;
printf("%f", num);
scanf("%f", &num);
printf("%f", num);
}
我检查了其他问题,但他们询问为什么输入非法输入类型导致无限循环。
我的代码在执行时导致无限循环,这意味着它在进入任何内容之前进入循环。
我这样编译:
gcc -o readSum readSum.c
终端输出:
vim readSum.c
15jz4@hera:~$ gcc -o readSum readSum.c
15jz4@hera:~$ ./readSum
0.000000
按任意键后没有任何反应 -Ctrl + Z退出状态,但可能还有其他一些键可以阻止它。 - 要重新安装,直到那时......我不能c + p。
修改
哇......反应非常快。
真的,伙伴们,“整个代码”的内容是什么?为什么我不提出我的整个代码?这是我的整个代码。或者我应该告诉你我在顶部有#include吗?
我创建它只是为了测试scanf。
这正是关键点,由于某种原因,执行后它只是进入一个无限循环,完全没有逻辑推理!我试过int main(){},以return 0结束它;没有scanf它工作正常,就像我使用任何其他函数,如printf(...)但我无法弄清楚为什么我执行后立即没有任何反应,我只能通过使用ctrl + z返回。我将它与其他类似代码进行了比较,看不出原因。
不,它不是坐在那里等待输入。从字面上看,屏幕就像在无限循环中一样熄灭。
从评论来看,逻辑上没有任何问题,它必须是背景中的东西,比如缺少一些图书馆资源(尽管我认为这不太可能)。
Nonononononono ...为什么没有图像?这会对情况有所帮助!!
答案 0 :(得分:1)
实际上工作正常。甚至添加了一个打印语句来检查。我认为你输入一个带有无限循环的数字令人困惑,因为没有循环开始。
#include <stdio.h>
main() {
float num = 0;
scanf("%f", &num);
printf("%f\n", num);
}