Board logo

标题: C语言基本数据类型:整型数据详解(一) [打印本页]

作者: 苹果也疯狂    时间: 2015-3-7 12:51     标题: C语言基本数据类型:整型数据详解(一)

1. 整型 Int

    C 语言提供了很多整数类型(整型),这些整型的区别在于它们的取值范围的大小,以及是否可以为负。Int 是整型之一,一般被称为整型。以后,在不产生歧义的情况下,我们把整数类型和 Int 都称为整型。



    Int 代表有符号整数,也就是说,用 Int 声明的变量可以是正数,可以是负数,也可以是零,但是只能是整数。标准规定 Int 的最小取值范围是 -3276732767。Int 的取值范围因机器而异,但是一定要大于或者等于 -32767 到 32767。一般来说,Int 占用一个的内存空间。因此,字长为 16 位(Bit)的旧式 IBM 兼容机使用 16 位来储存整型 Int ,取值范围是

-3276832767 。目前的个人电脑一般都是 32 位字长的,这些电脑中,Int 一般也是 32 位的,取值范围是 -2147483648 到 2147483647。对于使用 64 位 CPU 的电脑,使用更多储存 Int 也是很自然的事情,取值范围当然也会更大。




2. 声明 Int 类型的变量


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

        Int Erns;  /* 声明一个变量 */

        /* 注意:一定要用逗号(,),不能用分号(;)*/

        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 = C8

        Dec = 200; Octal = 0310; Hex = 0xc8; HEX = 0XC8





欢迎光临 电子技术论坛_中国专业的电子工程师学习交流社区-中电网技术论坛 (http://bbs.eccn.com/) Powered by Discuz! 7.0.0