整数是我们生活中常用的数据类型,也是编程中常用的一种数据,C语言使用int关键字来定义整数变量(int是integer 的简写)。
在定义变量的时候,可以加signed、unsigned、short和long四种修饰符。
signed:有符号的,可以表示正数和负数。
unsigned:无符号的,只能表示正数,例如数组的下标、人的身高等。
short:短的,现在主流的64位操作系统下,整数占用内存4个字节,使用 4
个字节保存较小的整数绰绰有余,会空闲出两个字节来,这些字节就白白浪费掉了。在C语言被发明的早期,或者在单片机和嵌入式系统中,内存都是非常稀缺的资源,所有的程序都在尽可能节省内存。
long:长的,更长的整数。
1、整数的取值范围
整数的取值范围与计算机操作系统和C语言编译器有关,没有一个固定的数值,我们可以根据它占用的内存大小来推断它的取值范围。
一个字节有8个位,表示的数据的取值范围是28-1,即255。
如果占用的内存是两个字节,无符号型取值范围是28ⅹ28-1。
如果占用的内存是四个字节,无符号型取值范围是28ⅹ28ⅹ28ⅹ28-1。
如果占用的内存是八个字节,无符号型取值范围是28ⅹ28ⅹ28ⅹ28ⅹ28ⅹ28ⅹ28ⅹ28-1。
如果是有符号,取值范围减半,因为符号占一个位。
下面用一个示例代码来测试各种整数占用内存的大小。
示例(book60.c)
/* * 程序名:book60.c,此程序演示整数占用内存的大小和取值范围。 * 作者:C语言技术网(www.freecplus.net) 日期:20190525 */ #includeint main() { short si; // 短整数 int ii; // 整数 long li; // 长整数 printf("sizeof short is %d\n",sizeof(short)); printf("sizeof int is %d\n",sizeof(int)); printf("sizeof long is %d\n",sizeof(long)); }
运行效果
sizeof是C语言中保留关键字,是一种运算符,不是函数,sizeof实际上是获取了数据在内存中所占用的存储空间,以字节