C语言数据类型可分为基本数据类型、构造数据类型,指针类型、空类型这四大类。
本文将介绍基本数据类型的数据类型。其中基本数据类型可分为:整型、字符型、浮点型。本节要求熟悉使用2、8、10、16进制的转换。“%#”可以输出进制前面的前缀名如(0x,0);
1.整型
整型中分为short(短整型)、int(整型)、long(长整型)、long long(长长整型)。而整型又分为unsigned / signed,无符号型、有符号型。在C语言中不写unsigned / signed这个,则默认认为有符号型的。有符号型的最高位为符号位(0为正、1为负)。
根据有无符号整数类型取值范围。在笔试中常会出整数类型关于向下、向上溢出的相关题型。“%hd”,表示打印有符号int的一半(2位),而short就是2位的。“%hu”表示打印无符号2位。输出端a=-1是因为“%hd”打印有符号型的会把65535(1111 1111)最高位做为符号位1,即表负数的补码,通过反码+1负数原码即(-1);
如图2."%hu"表示无符号的2位整型。当变量a1运算大于signed short的取值范围时,则会保留低16位数据、高位的会被丢弃即为(0x00 00 00 01),所以hu:a1=1。其它同理可得。
图1
图2
计算机存整数是通过补码的方式进行存储。正数的原码、反码、补码都是一样的;负数的补码是等于反码加1;这里以-6735为例。代码运如下最右侧为补码后存储数据。存储方式又分为大端存储还是小端存储。小端存储是将高位数据存放在高位地址中,低位数据存放在低位地址中。大端存储则反之。而在X86系统中常用的是小端存储,大端存储在C51单片机中。
负数的原码、补码、反码计算
2.浮点型
浮点型分为float 、double类型。都采用IEEE 754标准存储的。浮点数据默认为double类型的,可以通过float a=0.9f;将它设置为float类型的。
float存储:1位符号位+8位指数位(+127偏移量)+23位尾数位
double存储:1位符号位+11位指数位(+1023偏移量)+52位尾数位
低于偏移量的表示为负数指数位,高于表示位正指数位
而在浮点型相关的题型常考2个精度不一样进行比较。
3.字符类型就没什么好说的,根据ASCII进行转化输出即可。
最后总结个关于不同系统中基本数据类型字节也是不同的。