4.4.2 整型变量
因为计算机只能识别二进制数据,所以无论多么复杂的数据,最后都会以二进制形式存储在内存中。不同的数据类型在内存中占用的空间是不同的,对它们执行数学运算的运算符也不相同。例如,存储小型整数时需要的内存会较小,计算机对其执行运算的速度就非常快;而大型整数所占用的内存会比较大,计算机对其执行运算的速度就会慢。所以运算在编程领域中是否合理使用数据类型,对整个计算机的效率有很大的影响。
1.整型变量的分类
整型变量可以分为如下4类。
(1)基本型:类型说明符为int,在内存中占有2字节。
(2)短整型:类型说明符为short int或short,所占字节和取值范围均与基本型相同。
(3)长整型:类型说明符为long int或long,在内存中占4字节。
(4)无符号型:类型说明符为unsigned。根据上述3种类型,无符号型又可以分为如下3种类型。
❑ 无符号基本型:类型说明符为unsigned int或unsigned。
❑ 无符号短整型:类型说明符为unsigned short。
❑ 无符号长整型:类型说明符为unsigned long。
尽管各种无符号类型所占的内存空间与相应的有符号类型相同,但是由于它省去了符号位,所以它不能表示负数。除非用unsigned指定变量为无符号型,否则都是有符号的。例如下面的变量是无符号型的:
unsigned int //无符号基本整型 unsigned long[int] //无符号长整型
在C语言中默认格式是有符号型的,加上修饰符“signed”也表示是有符号数。有符号整型变量的最大位为32767,无符号整型变量的最大值为65535。
在Turbo C中各种整型量所占用的内存及表示范围是不同的,具体如表4-1所示。
表4-1 整数类型
2.声明整型变量
声明整型变量的格式如下所示。
类型 变量名;
其中,“类型”可以是表2-1所示的各种类型,下面都是整型变量。
int a, b, c; //a、b、c为整型变量 long x, y; //x和y为长整型变量 unsigned p, q; //p和q为无符号整型变量
实例4-2
计算两个整型变量的和
源码路径daima\4\4-2
本实例的实现文件为“jisuan.c”,具体代码如下。
#include <stdio.h> int main(void) { int a, b; //声明两个整型变量 a=123; //赋值 b=1; printf("%d\n", a+b); //显示结果 printf("(unsigned)%u\n", a+b); }
拓展范例及视频二维码
范例4-2-01:求整数的绝对值
源码路径:演练范例\4-2-01\
范例4-2-02:求长整数的绝对值
源码路径:演练范例\4-2-02\
运行上述程序,将输出整型变量a和b的和,如图4-3所示。
图4-3 最终执行效果
上述实例在书写变量时,应该注意以下4点。
(1)允许在一个类型说明符后,定义多个有相同类型的变量。各变量名之间用逗号分隔。类型说明符与变量名之间至少用一个空格来间隔。
(2)最后一个变量名之后必须以“;”号结尾。
(3)变量的定义必须放在变量使用之前,一般放在函数体的开头部分。
(4)在对变量进行定义和运算时,要注意变量的取值范围,以防止溢出错误。看下面的代码:
int main(void){ long x, y, z; int a, b, c, d; x=1; y=2; z=2; a=3; b=4; c=x+a; d=y+b; printf("c=x+a=%d, d=y+b=%d\n", c, d); }
在上述代码中,变量x、y、z是长整型变量,变量a和b是基本整型变量。它们之间允许进行运算,运算结果为长整型。但是变量c和d定义为基本整型,因此最后结果为基本整型。这就说明不同类型的变量可以进行运算并相互赋值。其中类型转换是由编译系统自动完成的。