3.5.1 整型变量
整型变量是用来存储整型数值的变量。整型变量可以分为如表3.4所示的6种类型,其中基本类型的符号使用int关键字,在此基础上可以根据需要加上一些符号进行修饰,如关键字short或long。
表3.4 整型变量的分类
说明
表格中的[]为可选部分。例如,[signed] int在书写时可以省略signed关键字,直接写为int。
1.有符号基本整型
有符号基本整型的关键字是signed int,其中signed可以省略。有符号基本整型在内存中占4个字节,取值范围是−2147483648~2147483647。
说明
通常说到的“整型”,都是指有符号基本整型int。
定义一个有符号基本整型变量的方法是在变量前使用关键字int。例如:
int iNumber; /*定义有符号基本整型变量iNumber */ iNumber=-10; /*为变量赋值-10*/
或者在定义变量的同时为其赋值:
int iNumber=-10; /*定义有符号基本整型变量的同时进行赋值*/
注意
程序中用到的变量应集中定义,并放在变量赋值之前,否则会产生错误。例如:
/*正确的写法:*/ int iNumber1; /*先定义变量*/ int iNumber2; iNumber1=6; /*再对变量赋值*/ iNumber2=7; /*错误的写法:*/ int iNumber1; /*定义变量*/ iNumber1=6; /*为变量赋值,错误!!因为赋值语句在iNumber2变量定义之前*/ int iNumber2; /*定义变量*/ iNumber2=7; /*为变量赋值*/
【例3.4】输出有符号int类型的取值范围(实例位置:资源包\TM\sl\03\04)
#include <stdio.h> int main() { signed int i,j; /*定义有符号基本整型变量*/ i=-2147483648; /*为变量赋值*/ j=2147483647; /*为变量赋值*/ printf("有符号整型变量最小值是%d\n",i); /*显示整型变量*/ printf("有符号整型变量最大值是%d\n",j); /*显示整型变量*/ return 0; /*程序结束*/ }
运行程序,显示效果如图3.8所示。
注意,如果赋值时i或j的值超出int型的取值范围−2147483648~2147483647,将会发生截断处理(即超出int长度范围的高位字节会被自动截掉),产生错误的计算结果或逻辑错误。
图3.8 有符号基本整型
2.无符号基本整型
无符号基本整型使用的关键字是unsigned int,其中int可以省略。无符号基本整型在内存中占4个字节,取值范围是0~4294967295。
定义一个无符号基本整型变量的方法是在变量前使用关键字unsigned。例如:
unsigned iUnsignedNum; /*定义无符号基本整型变量iUnsignedNum */ iUnsignedNum=111; /*为变量赋值111*/
3.有符号短整型
有符号短整型使用的关键字是signed short int,其中signed和int可以省略。有符号短整型在内存中占两个字节,取值范围是−32768~32767。
定义一个有符号短整型变量的方法是在变量前使用关键字short。例如:
short iShortNum; /*定义有符号短整型变量iShortNum */ iShortNum=-521; /*为变量赋值-521*/
4.无符号短整型
无符号短整型使用的关键字是unsigned short int,其中的关键字int在编写时可以省略。无符号短整型在内存中占两个字节,取值范围是0~65535。
定义一个无符号短整型变量的方法是在变量前使用关键字unsigned short。例如:
unsigned short iUnsignedShtNum; /*定义无符号短整型变量iUnsignedShtNum */ iUnsignedShtNum=222; /*为变量赋值222*/
5.有符号长整型
有符号长整型使用的关键字是signed long int,其中的关键字signed和int在编写时可以省略。有符号长整型在内存中占4个字节,取值范围是−2147483648~2147483647。
定义一个有符号长整型变量的方法是在变量前使用关键字long。例如:
long iLongNum; /*定义有符号长整型变量iLongNum */ iLongNum=-3333333L; /*为变量赋值−3333333*/
6.无符号长整型
无符号长整型使用的关键字是unsigned long int,其中的关键字int在编写时可以省略。无符号长整型在内存中占4个字节,取值范围是0~4294967295。
定义一个无符号长整型变量的方法是在变量前使用关键字unsigned long。例如:
unsigned long iUnsignedLongNum; /*定义无符号长整型变量iUnsignedLongNum */ iUnsignedLongNum=6666666L; /*为变量赋值6666666*/