爱问知识人 爱问教育 医院库

C 中的整型常识是什么?

首页

C++中的整型常识是什么?

C/C++中的整型常识是什么?

提交回答

全部答案

    2017-08-06 22:47:26
  •   很多人对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字节长,因为她的长度在不同的编译器上并不相同。

    刘***

    2017-08-06 22:47:26

类似问题

换一换

相关推荐

正在加载...
最新问答 推荐信息 热门专题 热点推荐
  • 1-20
  • 21-40
  • 41-60
  • 61-80
  • 81-100
  • 101-120
  • 121-140
  • 141-160
  • 161-180
  • 181-200
  • 1-20
  • 21-40
  • 41-60
  • 61-80
  • 81-100
  • 101-120
  • 121-140
  • 141-160
  • 161-180
  • 181-200
  • 1-20
  • 21-40
  • 41-60
  • 61-80
  • 81-100
  • 101-120
  • 121-140
  • 141-160
  • 161-180
  • 181-200
  • 1-20
  • 21-40
  • 41-60
  • 61-80
  • 81-100
  • 101-120
  • 121-140
  • 141-160
  • 161-180
  • 181-200

热点检索

  • 1-20
  • 21-40
  • 41-60
  • 61-80
  • 81-100
  • 101-120
  • 121-140
  • 141-160
  • 161-180
  • 181-200
返回
顶部
帮助 意见
反馈

确定举报此问题

举报原因(必选):