❶ 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;等等
可參考一下《高質量編程》著:林銳