1.数组下标从0开始而不是1开始!
即a[0]——a[99],千万不要出现a[100]的情况。
2.auto关键字是个就是个摆设,除非你想在定义的时候使代码对齐好看点
如:register int a = 1;
auto int b = 2;
static c = 3;
3.表达式中数组名可以"看做"是指针
但记住,数组名并不是指针,有很多区别。
4.不允许函数嵌套。
5.注意宏定义中的空格!
#define a(n) a_expanded(n)
则a(x);——被扩展为:a_expanded(x);
而:
#define a"此处有空格"(n) a_expanded(n)
a(x);
——被扩展为:(x) a_expanded(x)
6.ANSI C标准对一个能够成功编译的程序的最小长度做了限制
每一个ANSI C编译器必须能够支持:
- 在函数定义中形参数量的上限至少可以到达31个。
- 在函数调用时实参数量的上限至少可以达到31个。
- 一条源代码里知识可以有509个字符。
- 在表达式中至少可以支持32层嵌套的括号。
- long int的最大值不得小于2 147 483 647(就是说long型整数不得低于32位)
7.const最有用之处就是用来限定函数的形参,const定义的并不是真正的常量;
证明:
const int MAX = 10;
int A[MAX];//——定义出错
const修饰指针时注意:
const int * p;p指向的内存中的数据不能被改变
int const * p;p指向的内存中的数据不能被改变
int * const p;p指向的内存中数据可以被改变,但p本身不能被改变
const int * const p;p本身不能改变,p所指向的内存中的数据也不能被改变
8.sizeof返回无符号整形!sizeof不是函数!
怎么证明sizeof 不是函数?
int a;
sizeof(int) = 4;
sizeof(a) = 4;
sizeof a ——也是4 不需要括号!
此时要注意:
sizeof int——错误!此时int 把sizeof当成int的修饰词;比如 signed int , register int 。。。
9.尽量不要在你的代码中使用无符号整形,以免增加不必要的复杂性!最好使用位段和二进制掩码时使用无符号数;
10.数据类型的转换!一定要注意
另外添加一个例题:
int j = -2;
unsigned int i = 1;
if((i + j) >=0)
{
printf("i + j > 0 \n");
}
else
{
printf("i + j < 0 \n");
}
看看是什么结果。