C语言-基本数据类型

C的数据类型分类


1,整型
char, short, int , long
每个前面都可以加上unsigned ,表示无符号
无符号的时候注意三点:


1,可以多使用一个比特,
2,永远不可能小于0,因此在做数据比较时容易忽略
3,在做字节流操作时,请保留符号位(最高位)
所以很多编译器会内置一个类型
typedef unsigned char byte_t;
#define BYTE unsigned char
unsigned int uiX = xxx;
int iY = -1;
if(uiX < iY){
}
//会有警告
假设有8位二进制数
11111111
如果当做char就是-1
当做unsigned char就是255
00000001 =》 +1
11111111 =》 -1
why? 补码(反码(+1)) = -1
反码(+1) = 11111110
补码(11111110) = 11111111


char byX;//最大可表示127
unsigned char byY;最大可表示255


unsigned char iX = 255;
char iY = (char)iX;
printf("%d\n",iY);




1.1整型中各个类型的长度
char = 8-16
short = 16-32
int = 16 - 64
long = 32-64
根据不同编译器会有区别
在32位编译器中
char=8,short=16,int=32,long long=64




2,浮点型
float =>32
double =>64
2.1浮点计算是不准确的
在低精度的平台
if(3.141595666666 == 3.141595666666){
  //可能运行不到这里
}


所以,浮点数的比较,会加上误差值
if(floatX - 3.14 <= 0.01){
}
浮点数组成(数字(小数点前与后),小数点后长度)




3,指针型
指针的本质,是内存的一个位置,理论上可以指向内存中任意一个位置
但为什么实际上不能?因为操作系统有做保护,只留下固定区间让应用程序读取
所以能力大,危险也大


任何类型的指针长度都是一样长的,都等于编译器的字长(word size)
sizeof(char*)==sizeof(short*)==sizeof(int*)==...


一个指针必须包含两方面信息
位置+类型=======以一个点为起点,取一个区间(那个类型的长度)




char chX = 'c';
char* pX = &chX;
printf("%c\n",*pX);


4,数组


5,复合型
结构体,联合体
struct,union
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值