1. 当表达式中存在有符号类型和无符号类型时,所有的操作数都自动转换为无符号类型。
2. 对于浮点数来说,浮点数(float,double)实际上都是有符号数,unsigned 和signed前缀不能加在float和double之上,当然就不存在有符号数根无符号数之间转化的问题了。
[引用于: http://hi.baidu.com/aokikyon/blog/item/75b98d99b58276066f068c4b.html ]点击打开链接
3. C中printf计算参数是从右到左压栈的
[引用于:http://hi.baidu.com/aokikyon/blog/item/3f5149d963bac4e338012f37.html ]点击打开链接
4. 一个'L'的NUL用于结束一个ACSII字符串。
两个'L'的NULL用于表示什么也不指向(空指针)。
5. const 定义的变量,不是真正的常量。
const int * grape; // 指针指向的变量是只读的。
int const * grape; // 指针指向的变量是只读的。
int * const grape; // 指针是只读的。
char * const *(*next)(); // 这个声明表示“next是一个指针,它指向一个函数,该函数返回另一个指针,该指针指向一个类型为char的常量指针”。
char *(* c[10])(int **p); //
6. 声明注意点:
--> 函数的返回值不能是一个函数;
--> 函数的返回值不能是一个数组;
--> 数组里面不能有函数;
--> 函数的返回值允许是一个函数指针;
--> 函数的返回值允许是一个指向数组的指针;
--> 数组里面允许有函数指针;
--> 数组里面允许有其他数组;
7. 如果结构体中的某个字段没有被赋值,那么他会被赋值成ANSI C的默认值:
--> 指针被设置成NULL,整型被设置成0, 浮点数被设置成0.0