知识点:
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.尽量不要在代码中使用无符号数,以避免增加不必要的复杂性。不要仅仅因为无符号数不存在负值(如年龄),就用它来表示数量。
只有在使用
位段和二进制掩码时候,才可以用无符号数。在表达式中使用
强制转换,是操作数均为有符号或者无符号数,这样就不必由编译器选择结果的类型。