我来我网
https://5come5.cn
 
您尚未 登录  注册 | 菠菜 | 软件站 | 音乐站 | 邮箱1 | 邮箱2 | 风格选择 | 更多 » 
 

本页主题: C/C++中的整型常识 显示签名 | 打印 | 加为IE收藏 | 收藏主题 | 上一主题 | 下一主题

klo



性别: 帅哥 状态: 该用户目前不在线
等级: 品行端正
家族: YD一族
发贴: 473
威望: 0
浮云: 1105
在线等级:
注册时间: 2007-01-10
最后登陆: 2008-06-30

5come5帮你背单词 [ evening /'i:vniŋ/ n. 傍晚,晚上 ]


C/C++中的整型常识

C/C++中的整型常识

本文来自:http://bbs.51cto.com/thread-35769-1-1.html

C/C++中的整型常识:很多人对C/C++中的整型不太了解,导致代码移植的时候出现问题,本人在此总结一下,若有描述错误,请务必指出,谢谢!

a. C/C++对整型长度的规定是为了执行效率,将int定义为机器字长可以取得最大的执行速度;
b. C/C++中整型包括:int, char 和 enum, C++中还包含bool类型,C99中bool是一个宏,实际为_Bool;
c. C 和 C++ 对 enum 的规定有所不同,这里不描述;
d. 修饰整型正负的有 signed 和 unsigned,对于 int 默认为 signed;
e. 修饰 int 大小的有 short 和 long, 部分编译器还扩展了一些更长的整型,比如 long long 和 __int64, C99中增加了long long和unsigned long long;
f. int 的长度 与 机器字长相同, 16位的编译器上int长16位,32位的编译器上int长32位;
g. short int 的长度 小于等于 int 的长度,注意她们可能长度相等,这取决于编译器;
h. long int 的长度 大于等于 int 的长度,注意她们可能长度相等,这取决于编译器;
i. char 的长度应当可以包容得下一个字符,大部分系统中就是一个字节,而有的系统中可能是4个字节,因为这些系统中一个字符需要四个字节来描述;
j. char 的正负取决于编译器,而编译器的决定取决于操作系统,在不同的编译器中char可能等同于signed char,也可能等同于unsigned char;

总结:
a. 出于效率考虑,应该尽量使用int和unsigned int;
b. 当需要指定容量的整型时,不应该直接使用short、int、long等,因为在不同的编译器上她们的容量不相同。此时应该定义她们相应的宏或类型,比如在VC++6.0中,可以如下定义:
typedef unsigned char UBYTE;
typedef signed char SBYTE;
typedef unsigned short int UWORD;
typedef signed short int SWORD;
typedef unsigned int UDWORD;
typedef signed int SDWORD;
typedef unsigned __int64 UQWORD;
typedef signed __int64 SQWORD;
然后在代码中使用 UBYTE、SBYTE、UWORD 等,这样当代码移植的时候只需要修改相应的类型即可。
定义自己的类型虽然在代码移植的时候只需要修改一处即可,但仍然属于源代码级别的修改,所以 C++ 2.0 中将这些类型定义在模板中,可以做到代码移植时无需修改代码。
c. 在定义char时,一定要加上 signed 或 unsigned,因为她的正负在不同的编译器上并不相同。
d. 不要想当然的以为char是1字节长,因为她的长度在不同的编译器上并不相同。


本帖最近评分记录:
  • 浮云:5(zhd32) 优秀转贴
  • 顶端 Posted: 2007-11-17 13:54 | [楼 主]
    abcd0106





    性别: 帅哥 状态: 该用户目前不在线
    等级: 鹤立鸡群
    发贴: 1093
    威望: 0
    浮云: 1049
    在线等级:
    注册时间: 2005-10-08
    最后登陆: 2009-04-04

    5come5帮你背单词 [ broom /bru:m/ n. 扫帚;vt. 扫除,用扫帚扫 ]


    这么多类型啊,就只是记得一些了
    顶端 Posted: 2007-11-17 15:30 | [1 楼]
    筱枚



    自信之戒
    性别: 美女 状态: 该用户目前不在线
    头衔: 蠢得无可救药
    等级: 前途无量
    家族: 起早不摸黑
    发贴: 8888
    威望: 0
    浮云: 1243
    在线等级:
    注册时间: 2007-09-07
    最后登陆: 2010-07-10

    5come5帮你背单词 [ condition /kən'diən/ n. 条件,状态,状况,环境,形势 ]


    好多哦....好些很少接触
    顶端 Posted: 2007-11-17 16:11 | [2 楼]
    不会游泳的鱼



    性别: 帅哥 状态: 该用户目前不在线
    等级: 栋梁之材
    发贴: 514
    威望: 0
    浮云: 1117
    在线等级:
    注册时间: 2007-08-29
    最后登陆: 2008-06-07

    5come5帮你背单词 [ come /kΛm/ vi. 来,到来,出现,成为,是 ]


    这些很重要,尤其是对做底层的。
    顶端 Posted: 2007-11-17 17:56 | [3 楼]
    ljpdxj



    性别: 帅哥 状态: 该用户目前不在线
    等级: 栋梁之材
    发贴: 687
    威望: 0
    浮云: 1108
    在线等级:
    注册时间: 2006-02-28
    最后登陆: 2008-06-29

    5come5帮你背单词 [ disturbance /dis'tə:bəns/ n. 动乱,骚动,打扰,干扰,(身心)失调 ]


    底层编程这些经常见得到
    顶端 Posted: 2007-11-17 17:57 | [4 楼]
    allenpower



    性别: 帅哥 状态: 该用户目前不在线
    头衔: 我素新人~~
    等级: 不日成名
    发贴: 406
    威望: 0
    浮云: 497
    在线等级:
    注册时间: 2007-04-15
    最后登陆: 2011-12-02

    5come5帮你背单词 [ instruction /in'strΛkən/ n. 教育,指导,(pl.)指示,说明 ]


    确实~很重要,我就是C没有学好,后悔啊~
    顶端 Posted: 2007-11-17 17:58 | [5 楼]
    fishier



    性别: 帅哥 状态: 该用户目前不在线
    等级: 鹤立鸡群
    发贴: 1186
    威望: 0
    浮云: 1326
    在线等级:
    注册时间: 2007-04-29
    最后登陆: 2019-01-12

    5come5帮你背单词 [ hemisphere /'hemisfiə/ n. 半球,半个地球 ]


    考了两次C。为什么都是笔试过,上机就不能呢?
    顶端 Posted: 2007-11-17 18:12 | [6 楼]
    我来我网·5come5 Forum » 程序员之家

    Total 0.017091(s) query 5, Time now is:05-03 11:12, Gzip enabled
    Powered by PHPWind v5.3, Localized by 5come5 Tech Team, 黔ICP备16009856号