
为什么最后出来是这样的?跟书上的程序是一样的呀,是软件问题还是说哪里有问题
以下回复参考:皆我百晓生、券券喵儿等免费微信小程序作答:
从您提供的代码和运行结果来看,出现这样的结果是由于在代码中有一个明显的错误导致的。在代码的第5行,您使用了两个等号(==)来进行赋值操作,这是一个比较操作符,用于判断两个值是否相等,而不是赋值操作符(=)。因此,这一行实际上并没有将值 3.0 赋给变量 b,而是进行了一个比较操作,这个操作的结果是布尔值(true 或 false)。然后这个布尔值又和变量 b 的声明混在一起,这导致了未定义的行为。因为变量 b 实际上并没有被赋值,所以当执行到除法运算时,由于分母为零,这会导致无限大的结果或者称之为“无穷大”(在数学术语中),这就是为什么结果输出是 s=1.#INF00 的原因。这是一种浮点异常的表现,指示了一个数学运算错误。正确的代码应该是 b=3.0;。所以修正这个问题的方法就是使用正确的赋值操作符 = 来给变量 b 赋值。修正后的代码如下:
#include "stdio.h"
main()
{
float a, b, s;
a = 5.0;
b = 3.0; // 注意这里是赋值操作符 "=" 而不是比较操作符 "=="
s = a / b;
printf("s=%f\n", s);
}