您的位置:首页 > 编程语言 > C语言/C++

C语言陷阱与缺陷(7)

2015-08-03 09:02 288 查看
可移植性
1.应对C语言标准变更

2.标识符名称的限制

能区别多少个字符不同的外部名称,有无区分大小写。

3.整数的大小

C提供了3种不同长度的整数:short、int、long,它们的长度是非递减的。

4.字符是有符号整数还是无符号整数

在实际许可的情况下,尽量使用无符号类型

5.移位运算符

有符号数的右移,可以用0填充空出的位,也可以用符号位的副本填充空出的位;无符号数的右移,只能用0填充空出的位。

移位对象的长度为n位,则移位计数a的范围为0<=a<n。

6.内存位置0

NULL指针并不指向任何对象,除了赋值和比较运算,其它任何目的使用NULL指针都是非法的。

NULL指针的误用是未定义的。

7.除法运算时发生的截断

在除法运算中,如:q=a/b,r=a%b,除了满足q*b+r=a,a的符号改变时,q的符号也改变但绝对值不变外,还要保证a与r同正负。

8.随机数的大小

PDP-11计算机上的整数长度为16位(包含符号位),其rand函数的返回值介于0到2^15-1之间。

9.大小写转换

先加再减,避免下溢出

1. 首先释放,然后重新分配

调用realloc函数,应先释放内存后在重新分配。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: