【发布时间】:2016-10-26 22:39:54
【问题描述】:
我的第一个堆栈溢出问题,让我们看看这进展如何!
我不明白为什么这段简单的 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?p>
我创建这个只是为了测试 scanf。
这正是重点,由于某种原因,执行后它只是毫无逻辑地进入了无限循环!我试过 int main() { },以 return 0 结尾;如果没有scanf,它可以正常工作,就像我使用printf(...)之类的任何其他函数一样,但我不知道为什么在我执行它后立即什么都没有发生,我只能通过使用ctrl + z返回。和其他类似的代码对比,看不出原因。
不,它不是坐在那里等待输入。从字面上看,屏幕就像无限循环一样熄灭。
从 cmets 判断,逻辑上没有问题,它一定是在后台,比如缺少一些库资源(虽然我认为这不太可能)。
Nonononononono...为什么没有图片?这将对情况有很大帮助!
【问题讨论】:
-
展示你的整个程序。你说的是循环,这里没有循环。
-
1.不要那样编译它,像这样
gcc -Wall -Werror -o readSum readSum.c。 2. 该程序的任何地方都没有循环。 3. 你的main()原型是错误的,但如果你按照我说的编译它你就会知道。 -
如果在运行程序后按
1然后回车会发生什么?另外我建议你像Clara的例子一样添加printf行,然后你就会知道scanf是否通过了。 -
@TestBug 请回答问题:如果在运行程序后按 1 然后 Enter 会发生什么?
-
“没有用”是没用的。 什么不起作用?你按1,它没有出现在屏幕上?您是否在程序中添加了
printf?您应该在scanf之前和之后添加一个。是否打印其中任何一个?他们会无限打印吗? 没有我们坐在你旁边,如果你不告诉我们,我们就无法知道正在发生的事情。我开始认为你现在只是在拖钓。
标签: c compilation infinite-loop