知識點:
1.float不會被自動擴展為double。 在ANSI C中
2.宏所接受參數類型可以不同。 最好只用于命名常量和為結構提供簡潔記法。
3.操作符左右最好用空格分開。防止古老版本的程序,會修改賦值符的位置。
4.在limits.h中有INT_MAX, LONG_MAX定義
5.類型不兼容。因為兩個指針所指對象不同。而不是修飾符不同
foo (const char **p) {}
int main(int argc, char **argv)
{
foo(argv);
}
6.K&R C 和 ANSI C對待無符號數原則不同
K&R C 使用無符號保留的原則。
ANSI C 使用值保留的原則。(整數如果轉換為signed不會丟失信息,就轉換為signed,否則轉換為unsigned)
經過gcc中測試,采用的是ANSI C的原則
7.盡量不要在代碼中使用無符號數,以避免增加不必要的復雜性。不要僅僅因為無符號數不存在負值(如年齡),就用它來表示數量。
只有在使用
位段和二進制掩碼時候,才可以用無符號數。在表達式中使用
強制轉換,是操作數均為有符號或者無符號數,這樣就不必由編譯器選擇結果的類型。