当前位置:文档之家› C语言基本数据类型整型(int)用法详解

C语言基本数据类型整型(int)用法详解

C语言基本数据类型:整型(int)用法详解1. 整型intC 语言提供了很多整数类型(整型),这些整型的区别在于它们的取值范围的大小,以及是否可以为负。

int是整型之一,一般被称为整型。

以后,在不产生歧义的情况下,我们把整数类型和int都称为整型。

int代表有符号整数,也就是说,用int声明的变量可以是正数,可以是负数,也可以是零,但是只能是整数。

标准规定int的最小取值范围是-32767 到32767。

int的取值范围因机器而异,但是一定要大于或者等于-32767 到32767。

一般来说,int占用一个字的内存空间。

因此,字长为16 位(Bit)的旧式IBM 兼容机使用16 位来储存整型int,取值范围是-32768 到32767 。

目前的个人电脑一般都是32 位字长的,这些电脑中,int一般也是32 位的,取值范围是-2147483648 到2147483647。

对于使用64 位CPU 的电脑,使用更多位储存int也是很自然的事情,取值范围当然也会更大。

2. 声明int类型的变量正如我们在以前的教程里看到的那样,int用于声明整型变量:以int打头,后面跟着变量的名字,最后以分号(;)结束。

例如:interns; /* 声明一个变量*//* 注意:一定要用逗号(,),不能用分号(;)*/int hogs, cows, goats; /* 声明三个变量*/以上声明创建了变量,但是没有给它们提供“值(value)”。

在前面的教程中,我们已经用了两种方法使变量获得“值”。

一种是赋值:cows = 500; 。

另一种是使用scanf函数:scanf( "%d", &goats ); 。

下面我们来学习第三种方法。

3. 初始化变量初始化变量是指给变量赋初值:声明变量的时候,在变量名的后面写上等号(=),然后写下你希望赋予变量的“值”。

例如:int hogs = 21;int cows = 32, goats = 14;int dogs, cats = 94;以上声明创建了变量,并且为这些变量分配了空间,同时也赋了初值。

注意,第三行中只有cats 被初始化为94,而dogs 没有被初始化!如下图:4. int常量上面的例子中,21、32、14,以及94 都是整数常量。

C 语言中,整数常量的默认类型是int。

如果整数常量的大小超过了int的取值范围,那么编译器将会把这个整数常量当作long int类型来处理,这个我们后面还会讲到。

21、32、14 和94 都在int的取值范围之内,因此它们都是int常量。

5. 输出int型数据我们可以用printf函数来输出int型数据。

正如我们在前面的教程中看到的那样,占位符%d代表输出的是int型数据,它告诉printf函数在什么地方输出相应的int型数据。

%d 也被称为格式限定符(format specifier),因为它指定了printf函数应该使用什么形式来输出数据。

printf函数的第一个参数只能是字符串,这个字符串被称为格式串(format string)。

格式串中有多少个%d,我们就应该相应地提供多少个int型参数给printf函数。

int型参数可以是int型变量,int型常量,以及结果为int型的表达式等。

例如:int year = 2005; /* year 是int型变量*/printf( "Today is %d-%d-%d ", year, 9, 20 + 9 ); /* 20 + 9 是加法表达式*/保证格式限定符的数目和参数数目一致是我们的责任,编译器不负责捕捉这种错误!例如:#include <stdio.h>int main(void){int ten = 10, two = 2;printf("%d minus %d is %d ", ten ); /* 少写了两个参数*/getchar(); /* 等待用户按回车*/return 0;}这个程序可以通过编译,但是运行结果将会出乎意料,因为我们少写了两个参数。

标准规定,如果格式限定符的数目大于参数数目,则printf函数的行为是未定义的;如果参数数目大于格式限定符的数目,则多余的参数会被忽略。

6. 八进制(octal)和十六进制(hexadecimal)C 语言中,整数常量默认是十进制(decimal)整数。

通过在整数常量前面加上特定的前缀,可以把它设定为八进制或者十六进制整数。

前缀0x 或者0X 把整数常量设定为十六进制整数。

注意,是数字0 ,而不是字母O ,别搞错了哦!例如:十进制的16 用十六进制来表示是0x10 或者0X10 。

在整数常量前面加上前缀0 ,表示它是八进制整数。

注意,是数字0 ,而不是字母O 。

例如:十进制的16 表示为八进制就是020 。

7. 以八进制或者十六进制形式输出数据使用格式限定符%o 可以以八进制的形式输出整数。

注意,是小写字母o ,不是数字0 。

使用%x 或者%X 可以以十六进制的形式输出整数。

小写x 表示输出使用小写字母,大写X 表示输出使用大写字母。

使用%#o,%#x 或者%#X,得到的输出将包括前缀0,0x 或者0X。

例如:#include <stdio.h>int main(void){int x = 200;printf("dec = %d; octal = %o; hex = %x; HEX = %X ", x, x, x, x);printf("dec = %d; octal = %#o; hex = %#x; HEX = %#X ", x, x, x, x);getchar();return 0;}这个程序的输出是:dec = 200; octal = 310; hex = c8; HEX = C8dec = 200; octal = 0310; hex = 0xc8; HEX = 0XC81. 其它整数类型int是C 语言的基本整数类型,可以满足我们处理一般数据的需求。

C 语言还提供了四个可以修饰int的关键字:short、long、signed,以及unsigned。

利用这四个关键字,C 语言标准定义了以下整数类型:1) short int(可简写为short),和int一样,也是有符号整数2) long int(简写:long),有符号整数3) long longint(简写:long long),C99 标准添加的类型,有符号整数4) unsigned int(简写:unsigned),无符号整数,不能表示负数5) unsigned long int(简写:unsigned long),无符号整数,不能表示负数6) unsigned short int(简写:unsigned short),无符号整数,不能表示负数7) unsigned long longint(简写:unsigned long long),C99 添加的类型,无符号整数8) 所有没有标明unsigned 的整数类型默认都是有符号整数。

在这些整数类型前面加上signed 可以使读者更清楚地知道这些是有符号整数,尽管有没有signed 都表示有符号整数。

例如:signed int等同于int。

一般我们把short 称为短整型,把long 称为长整型,把long long称为超长整型,把int 称为整型。

unsigned 打头的那些整数类型统称为无符号整型。

例如:我们称unsigned short 为无符号短整型。

以此类推。

2. 声明方式这些整数类型的声明方式与int类型的声明方式一样。

例如:longintestine;long johns;shortinterns;short ribs;unsignedints_count;unsigned players;unsigned long headcount;unsigned short yesvotes;long longago; /* C99 特有*/unsigned long long ego; /* C99 特有*/如果您的编译器不支持C99 标准,那就不能使用long long和unsigned long long。

3. 取值范围(表示范围)标准也规定了这些整数类型的最小取值范围。

short 的最小表示范围和int一样,都是-32767 到32767 。

也就是-(2^15 - 1)到(2^15 - 1)。

其中,2^15表示2 的15 次方。

类似地,2 的20 次方记作2^20 ,以此类推。

注意:C 语言中2^15 并不表示2 的15 次方,为了书写方便,我们姑且这么表示。

long 的最小取值范围是-2147483647 到2147483647 。

也就是-(2^31 - 1) 到(2^31 - 1) 。

unsigned short的最小表示范围和unsigned int一样,都是0 到65535(2^16 - 1)。

unsigned long 的最小取值范围是0 到4294967295(2^32 - 1)。

long long的最小取值范围是-9223372036854775807(-(2^63 - 1))到9223372036854775807(2^63 - 1);unsigned long long是0 到18446744073709551615(2^64 - 1)。

标准规定,int的表示范围不能小于short 的表示范围,long 的表示范围不能小于int的表示范围。

这就是说short 型变量占用的空间可能比int型变量少,而long 型变量占用的空间可能比int型变量多。

16 位(bit)的计算机中,int和short 一般都是16 位,而long 是32位;32位的计算机中,short一般是16 位,而long和int是32位。

TC2(16位的编译器)中,int是16位的;而Dev-C++(32 位的编译器)中,int是32 位的。

使用unsigned int声明的变量只能表示非负整数(0 和正整数)。

如果int是16 位的话,那么unsigned int的表示范围是0 到65535(2^16 - 1)。

这是因为unsigned 不需要符号位,可以把16 个位全都用于表示整数。

而int需要一个位作为符号位,用于表示正负,只有15 个位用于表示整数。

目前,long long一般64 位,long 是32 位,short 是16 位,而int或者16 位,或者32 位。

具体某个编译器到底使用多少位来表示这些类型,我们可以用运算符sizeof来获取。

相关主题