關於C語言學習中一些細節和疑惑的記錄

  1. 關於這兩個式子輸出結果的解釋  

       這個結果查詢某度後無果,打算自己總結。

    2.C語言中變量聲明後該不該賦初值?

聲明一個變量不賦初值後會是一個隨機值,因爲聲明變量後會分配一定的內存空間,如果不賦初值的話,內存中是什麼值,該變量就會是什麼值。若變量在後續程序中沒有經過賦值而直接使用,則結果不一定正確。若變量在後續程序中,經歷了賦值操作,則輸出結果就是正確的。爲了編程規範,一般在聲明變量後就賦一初值。

3.double 類型數據輸入爲%lf

4.關於c語言中強制類型轉換的問題

圖中所指語句整數除以浮點數,其結果應是浮點數,但賦值給int類型變量,按理說損失精度,這在C++,java中編譯不通過,需要進行強制轉換,但這在C語言中是允許的。

5.關於scanf的一些細節問題

scanf有時候會被忽略執行,這是因爲輸入緩衝區的問題,請參看下面這位博主的文章

https://blog.csdn.net/HNAKXR/article/details/81047391

利用

  fflush(stdin);/*清除輸入緩衝區*/
  getchar();/*喫掉回車*/

這兩個內置函數解決此問題。

 

下面輸入一個整數和一個字符,輸入有空格和沒有空格是有區別的:

scanf("%d %c",&i,&c);
scanf("%d%c",&i,&c);

輸入有空格時讀上空格纔算讀完,而沒有空格就不會讀空格。效果如上圖所示。

 

6.關於優先級問題的記錄

關係運算符比算數運算符優先級要低,但比賦值運算符優先級要高。

在關係運算符中,也有優先級之分,判斷是否相等==和不相等!=的優先級低於其他,而連續的關係運算是從左到右進行的

7.goto的使用場景:

當需要跳出多重循環時,需使用goto語句;

 

在其他情況不推薦使用goto;

8.一個數字以0開頭表示8進制,以0x開頭表示16進制

  八進制輸出以%o輸出,16進制輸出以%x輸出

9.float有效數字爲7位,浮點數運算沒有精度。

而且帶小數點的字面量是double類型,float類型需要帶f表明身份,例如1.23f

 

10.在整數運算時,用int就好,因爲現代計算機一般爲32位或64位,其一次便能處理一個int類型數據,所以現代計算機不存在short比int運算快的問題,而在浮點數運算時,可直接使用double類型進行計算,計算機有專門處理double類型數據的硬件,和float型數據速度相差無幾。

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章