11.25.2016
sizeof不是函数!!是运算符,用来测量变量或数据类型占用的字节大小
另一种写法:sizeofnum;(没有括号,自能用于变量)不可以测量数据类型e.g.int
字符长度:(以32位系统为基础)
基础 bit(位)
字节=8位
字=4字节=32位(32位系统)
半字=2字节=16位
数据类型字节长度
int 4
char 1
float 4
double 8
补码 最终计算机保存的二进制不是原码,而是补码
正数:补码即原码
负数:绝对值得原码取反加1(符号位也变)
知道负数补码获得原码:对补码取反加1
取值范围
char 1字节 二进制为8位 0000 0000~11111111即范围是-128~127即[-27~(27-1)]
int 4字节 二进制位4*8=32位 即-231~(231-1)
有符号signed 二进制最高位保存符号位
singed char溢出时 -128-1=127
指针的长度固定,衡为4个字节,因为指针保存的是地址,地址的长度是固定的,地址长度取决于系统(32位为4字节,64位为8字节)
sizeof与strlen区别
1.一个是运算符,一个是函数
2.sizeof统计时加‘\0’,strlen不加
3.统计数组时,sizeof只统计数组开辟的内存大小,不统计内容
0的ASC码就是’\0’,strlen()只要统计到’\0’就不会统计后面的内容了
无符号与有符号
typedef
typedef char Char;给数据类型重新命名
如果想把所有Char改为unsignedchar(无符号)以提高移植性,可以:
typedef unsigned char Char
typedef作用
1.提高代码移植性
2.代码保护
gets() 和scanf()的区别在于输入的字符串是否中间有空格:对于前者,只有遇到"\n"或文件结尾时时才停止输入,而对于后者,出现"\n"或空格都停止输入