一个程序是由算法和数值构成的,C语言当中用来表示数据的称之为变量和常量,变量指的是能够变化的值,常量就是不可变的,如:1、2、3、A、B、C等等
C语言为了方便我们更好地使用数据,光整数就分了四种变量类型,分别是:short,long,long long,unsignede修饰符
编程语言当中用来表示基本单位的一个量(存储单位),最小的叫位(bit)内存一次性写入和读取8bit的数据,在C语言中,使用的比较少,一般C语言当中我们用刀最小的单位叫字节(Byte),1Byte=8bit,随着计算机的发展,字节也越来越小,于是出现了字(word)和双字(dword),一个字等于4Byte,一个双字等于8Byte。现在双字已经成为计算机中较为基础的数量单位,因为熟知的整数很多都是用双字来代表,也就是32位。
想要在计算机当中存储一个数值:
一、在哪个内存地址当中进行存储
二、在存储的时候存储多大,放便读取,从当前地址读取到第几个
根据存储单位的不同,将所有能够表示整数的变量分成五种,int,short,long,long long,unsigned
int能够表示的数据大小在WINDOWS下面是32位
short能够表示的数据大小是16位
long在Windows下面能够表示的大小是32位(在其他系统下可能不同)
long long能表示的大小是64位
unsigned代表的是当前的数据类型是一个没有符号的(默认的其他几种是signed),他的首位不再用户表示符号位,也就是说它所有的数据都用来表示正数,那么他能够表示正数区域范围就比能够表示负数及正数的区域范围更大
需要注意进位,进位会影响到正确的值范围
unsigned是前置函数,如unsigned int;
unsigned与singned的区别在于,unsigned会把所有的长度来表示数值,它不会表示负数
short<=int<=long<=long long;
内存存储的值其实是一样的,只是看我们如何来使用这个值,如何解析这个值是关键
需要显示unsigned函数的数值用的占位符%u,如果用的是%d,则输出的数值依旧是有符号位的数值,至少printf里面是这么做的;
我们应该选择合适的占位符来表示我们需要表示的数值,如果我们需要的是一个unsigned int的值的话,那么我么你就必须要用%u,而不是%d,如果需要的是int的值的话,就需要用%d,而不是%u;
使用int时,如果要输出十进制,使用%d输出,如果要输出八进制的话,用%o输出,如果要输出十六进制的话,用%x输出
如果要显示标准的八进制数值的话,用%#o输出,如果要输出标准的十六进制数值的话,用%#x输出,例:用%x输出数字8的话,输出的就是8.而用%#x输出的话,就是0x8
使用long的时候,如果要更标准的表达此类的话,用%ld表示有符号,用%lud表示无符号,用%lx打印十六进制值,用%lo打印八进制的值
使用long long的时候,用%lld表示有符号,用%llu表示无符号
使用short的时候,现在一般都是转换成int后再打印,所以和int使用方式一致,所以使用short所耗费的资源比int更多;