1、bit 位
1字节=8位
1个字(32位处理器)=4个字节=32位
半字 = 2个字节 = 16bit
2、字节长度跟编译器分配有关系。
3、sizeof 不是函数,strlen是函数。
4、int num;sizeof(num);
int num;sizeof num;两种写法
sizeof(int)是对的写法,sizeof int是错误的。
5、用sizeof编程:int占4个字节,char占1个字节,float占四个字节,long占四个字节,short占2个字节,double占8个字节。
6、指针都是四个字节,因为所有指针变量保存的都是地址,操作系统地址长度是固定的,地址长度是由操作系统的位数决定的,如果操作系统是32位的,指针占4个字节,如果操作系统是64位,指针占8个字节。
7、sizeof计算长度是加‘\0’的,strlen计算长度‘\0’不算在内。
8、计算机中保存的负数除了符号位为一其他取得是原数的补码。
正数原码就是补码。
负数补码是原码绝对值取反加一。
9、通过typedef给数据类型重命名(如typedef unsigned char un_char)不仅提高了代码的移植性,而对代码起到了保护作用。
最后通过一道题来理解一下,关于char型常量取值范围:
某公司笔试题目:
int main()
{
char a[1000];
int i;
for(i = 0; i<1000;i++)
{
a[i] = -1 – i;
}
printf(“%d\n”,strlen(a)) ;
return 0;
}
输出结果?
解析:我们都知道char型无符号数取值范围为0~255,有符号数取值范围为-128~127
题目中有两个转折点,当循环到a[128] = -1 - 128,计算结果为127
当i=255时a[255] = 0,表示‘\0’循环结束。整个数组的长度为255.