C编程从入门到实践
上QQ阅读APP看书,第一时间看更新

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定义为基本整型,因此最后结果为基本整型。这就说明不同类型的变量可以进行运算并相互赋值。其中类型转换是由编译系统自动完成的。