一 關于浮點數:
1.1浮點數是否等于0判斷:因為浮點數都有精度,不能拿浮點數直接和0.0f進行比較,而應該采用以下方法:
if (f32data == 0.0f) // 隐含錯誤的比較
#define afx_f32_epsinon 1.0e-6 //全局 f32的浮點數精度
#define afx_f64_epsinon 1.0e-14 //全局 f32的浮點數精度
#define afx_f32_is_zero(f32data) ((f32data >=- afx_f32_epsinon) \
&& (f32data <= afx_f32_epsinon))
#define afx_f64_is_zero(f64data) ((f32data >=- afx_f64_epsinon) \
&& (f32data <= afx_f64_epsinon))
使用時: if(afx_f32_is_zero(f32data))
{ }
1.2浮點數避免除法運算,應該盡量轉為乘法或其它方法:r=周長/2pi;
#define pai_reciprocal (1 / 3.1416 ) // 編譯器編譯時,将生成具體浮點數
f32radius = f32circlelength * pai_reciprocal / 2;
二 程式的優化:
2.1 一個學生的結構體包含姓名 年齡 班級 各科成績;可以将各科成績單獨設定一個結構體,然後和學成基本資訊結構體之間通過一個索引(主鍵)建立關系,這樣在不需要成績時就不用定義很大的浮點資料類型。
三函數:
3.1若函數不寫傳回值,預設是整形的,而不是void;盡量為函數定義傳回值雖然有時候用不上,但大多數場合費用有用:可以作為右值指派或者判斷。
四 指針:指針數組(存放指針的數組)、數組指針(指向數組的指針)、常量指針與指針常量、this指針:
先從變量名開始讀,然後看變量名緊跟的運算符的優先級,即可完成解讀。
4.1