【问题标题】:Why is my C code not running or running too slow? [closed]为什么我的 C 代码没有运行或运行太慢? [关闭]
【发布时间】:2019-03-23 14:31:12
【问题描述】:

我在 c 中的代码是:

#include <stdio.h>

main()
{
    int fahr, celsius;
    int lower, upper, step;

    lower = 0;  
    upper = 300;    
    step = 20;  

    fahr = lower;
    while (fahr <= upper); {
        celsius = 5 * (fahr - 32) / 9;
        printf("%d\t%d\n", fahr, celsius);
        fahr = fahr + step;
    }
}

我已经用 gcc 编译它没有任何错误,并试图用 windows 提示符执行它。但是,它一直在思考,并没有显示任何内容。 有什么问题?

【问题讨论】:

  • while 语句后的杂散分号
  • 不是问题,但你应该使用int main(void)作为main的签名
  • 你用的这个古代主干是什么?升级你的编译器并使用 int main(void)
  • 打开编译器警告,你会看到问题所在。
  • @machine_1 在参数列表中使用void 有什么意义?这不是强制性的。

标签: c windows loops gcc


【解决方案1】:

删除 while 语句后的分号。

像这样,while循环是一个无限循环,因为花括号内的代码不被认为是循环体。 while 循环的主体是空的,永远不会终止。

大括号中的代码永远不会被执行。

【讨论】:

  • 值得注意的是,如果您启用警告,GCC 会警告您有关此问题的警告(大多数警告为 -Wall,但此特定问题由 -Wmisleading-indentation 捕获)。你几乎应该总是通过 -Wall,尤其是在你学习的时候。
【解决方案2】:

你写的 while 循环并没有按照你的意愿去做。错误就在这一行:

while (fahr &lt;= upper); {

这里的分号提前终止了while语句。这会创建一个无限循环,因为您的程序现在不断地评估 fahr &lt;= upper 而不修改 fahr 的值。

删除该分号,您的程序将按预期执行。

【讨论】:

    【解决方案3】:

    改变

        while (fahr <= upper); {
    

        while (fahr <= upper){
    

    由于 while 循环后面的分号,while 循环不会进入 { } 部分。所以fahr & upper 的值永远不会改变,while 循环会永远运行。删除分号,您的代码将运行良好。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-11-14
      • 1970-01-01
      • 2017-04-01
      • 2016-12-07
      • 2017-01-28
      • 2014-01-13
      • 2016-05-17
      相关资源
      最近更新 更多