❶ c语言初学,编完程序后计算出来的值很乱,是怎么回事
把scanf("%ld", &I);移动到prinf("请输入利润\n");的下一行就搞定了。
为什么要这样改?
编程时,要注意流程专,有先有属后,符合逻辑。
上述prinf("请输入利润\n");后,没有立即给I赋值,然后就对I进行运算,这样是不对的。
为什么没改前会有-64422008.00的计算结果?
编译器会把任何没有初始化的变量自动赋为垃圾值
例如上述的long int I;定义了I变量但是没有初始化赋值。系统自动赋为垃圾值。
垃圾值就像这种-8839284 ,一些很不靠谱的数。系统这么做是为了暗示你有变量可能没有初始化,但编译时是不会提示有错误的。
如何避免?
对于初学者,这类错误很常见。
建议编程时应该养成良好的习惯。
什么习惯?定义变量的同时对其进行初始化
例如:long int I = 0;
float x = 0.0;等等
可参考一下《高质量编程》著:林锐