C语言里fi=9.8*sin(b)-a_x*cos(b);当b=3.141593,各个参数都是float时,fi的值异常的大 等于-107374176.00

来源:学生作业帮助网 编辑:作业帮 时间:2024/05/09 02:44:39

C语言里fi=9.8*sin(b)-a_x*cos(b);当b=3.141593,各个参数都是float时,fi的值异常的大 等于-107374176.00
C语言里fi=9.8*sin(b)-a_x*cos(b);当b=3.141593,各个参数都是float时,fi的值异常的大 等于-107374176.00

C语言里fi=9.8*sin(b)-a_x*cos(b);当b=3.141593,各个参数都是float时,fi的值异常的大 等于-107374176.00
你的这个a_x没有初始化吧,只是定义了一个float a_x;
而没有给它赋值.
你这个b就是PI嘛,转化下就是fi = a_x;
这个没问题吧
所以fi的值就是a_x的值(有一点点的差距,不过精度无法表示那么微小的差距)
如果你用的是VS2010或是VC++6.0的话可能就不会有这个问题了,因为微软的C++编译器有个特点,几乎每个变量在定义的时候都会给它一个初始的值0,防止它出现一些危险的操作,比如说一旦你忘记给指针一个值了,直接用分配空间里的数值的话那么这个数对应的地址可能关系到一个系统文件,是很危险的事,所以微软的编译器会优化,不过这么做不忠于C++.一般用的都应该是G++编译器,这个编译器用的很广泛,它的特点是在定义一个变量的时候,会让系统把一块没有人用的内存空间给这个变量,而不去初始化为0,所以说有的书上写的是不初始化不赋值的话是一个随机数.而且一般情况下,编译器在多次运行这个程序的时候,系统一般不会改变那个变量的内存空间,所以很多次的结果是一样的.