-1

我有一个用 C 编写的程序,在 Xcode 4.6 中运行,其中一个函数根据用户输入将两个浮点数相除。出于某种原因,当我尝试以正确的顺序进行除法(代码示例 1)时,程序会暂停并以看似无休止的循环打开lldb调试器,并且当我尝试反转除法时,结果始终为零(代码示例 2)。

示例 1 代码:

float num2, num1;
int main() {
    scanf("%f",&num1);
    scanf("%f",&num2);

    num2 = num1/num2;

    printf("%f",num2);
}

样本 1 输出:

4
2      // user inputs calculation

(lldb)   // program keeps printing this indefinitely

示例 2 代码:

float num2, num2
int main() {
    scanf("%f",&num1);
    scanf("%f",&num2);

    num2 = num2/num1;

    printf("%f",num2);
}

样本 2 输出:

4
2        // user inputs calculation

0        // since calculation is inverted, input was interpreted as 2/4, but rather than returning 0.5, the program returns 0.

不知道为什么会发生这种情况,或者如何解决它。这里的任何人都有类似的问题并找到了解决方法?

4

2 回答 2

1

请不要再说一遍……这是C,不是C++。您需要将指向变量的指针作为参数传递scanf(),以便它能够修改(即写入)它们:

scanf("%f", &num1);
            ^
          This!
于 2013-03-14T20:58:09.957 回答
0

您看不到示例 1 中的输出的原因是您在字符串末尾printf缺少添加新行的 。\n在该行完成之前,lldb 不会向您打印该输出。

于 2013-03-15T08:57:10.820 回答