回首页 回首页 ◎ 设为首页  
◎ 收藏本站  
◎ 给我留言  
  
  首 页  C/C++教程  C++之父的FAQ  C/C++动向  C/C++源代码  C/C++误区  Unix/Linux  下载中心  乱七八糟  蚂蚁的Blog  
  当前位置:首 页 >> C/C++教程 >> C 语言基础教程 >> 10. 基本数据类型:整型(上)
最 近 更 新
54. goto 语句
53. switch 语句推荐
52. continue 和 break
51. 条件运算符(?:)
50. if 语句嵌套推荐
49. 逻辑运算符推荐
48. 在循环中使用 if 语句推荐
47. if 和 else 连用推荐
46. if 语句
45. 循环应用实例 2
最 新 推 荐
53. switch 语句推荐
50. if 语句嵌套推荐
49. 逻辑运算符推荐
48. 在循环中使用 if 语句推荐
47. if 和 else 连用推荐
44. 循环应用实例 1推荐
43. 循环嵌套推荐
40. for 循环推荐
37. 关系运算符推荐
36. while 循环推荐
热 门 排 行
2. 第一个 C 程序推荐
31. 预处理指令 #define..推荐
1. C 语言简介
11. 基本数据类型:整型..推荐
24. 运算符的优先级和结..推荐
5. 如何编写函数
13. 标识符命名规则
30. 字符串字面量推荐
36. while 循环推荐
7. 第三个 C 程序推荐
站 内 搜 索

Web stdcpp.cn
关键词

搜索方式

搜索范围

精确匹配
广 告

10. 基本数据类型:整型(上)


来源:蚂蚁的 C/C++ 标准编程 作者:antigloss 等级:精品
发布于2005-10-22 18:32 被读4058次 【字体:

Antigloss 最后修改于 2006-12-23

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\n", year, 9, 20 + 9 ); /* 20 + 9 是加法表达式 */

保证格式限定符的数目和参数数目一致是我们的责任,编译器不负责捕捉这种错误!例如:

            #include <stdio.h>

            int main(void)
            {
                int ten = 10, two = 2;

                printf("%d minus %d is %d\n", 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\n", x, x, x, x);
                printf("dec = %d; octal = %#o; hex = %#x; HEX = %#X\n", x, x, x, x);

                getchar();
                return 0;
            }

这个程序的输出是:

        dec = 200; octal = 310; hex = c8; HEX = C8
        dec = 200; octal = 0310; hex = 0xc8; HEX = 0XC8

参考资料:C Primer Plus, 5th Edtion By Stephen Prata
          ISO C99 标准

本文版权归 蚂蚁的 C/C++ 标准编程 以及 作者 antigloss 共同所有,转载请注明原作者和出处。谢谢。



相关专题:C 语言数据类型
38. 布尔类型再探讨
30. 字符串字面量

上一篇:9. 恒量(常量)和变量
下一篇:11. 基本数据类型:整型(中)

共有评论 17 条 网友评分 4分 查看全部评论

游客:张娱
评分:5
不错。。讲的很详细。。。这个网站非常好。。。就是怎么评论的人那么少。。。我来评论一下。。。非常好。。。可不要吧网站关了哦。。。呵呵。。。。我经常看的。。。。。
游客:sun
评分:0
我也同意!非常详细,实用!希望所有贴子都不要删!
游客:WCJ
评分:0
上面对于64 位 CPU 的电脑,多字节储存 int,是否能帮我列一下呢 也就是更新一下,现在的电脑都到了64位了
游客:antigloss
评分:0
我尚未接触过 64-bit 的 int,但我相信 64-bit 的编译器可能会使用 64-bit 的 int。
游客:若不舍根本
评分:5
很基础,但是很好!!!
游客:路人甲
评分:4
%#X\n中的#号 具体的意思是什么啊?
游客:antigloss
评分:0
你试一下有 # 和没 #,看看输出有什么区别就知道了
游客:糊涂神
评分:5
请问能不能用编译器转换带有小数点数值的进制
比如从十进制的16,5转换成十六进制的
我的email是hitel85@yahoo.it
我是一个初学者对您的这个C语言教程很感兴趣
我会往下努力学习的,同时也感谢您对我们网友做出的贡献,谢谢。

查看全部评论

【发表评论】 评分:1分 2分 3分 4分 5分


验证码:

Powered By Www.Xydw.COM Ver1.14 管理
Copyright © 2005-2006 蚂蚁的 C/C++ 标准编程 All Right Reserved. XCMS
粤ICP备06014124号   站长:Antigloss