int型长度到底是几个字节? int变量的字节长度为

基本数据类型

C语言中只有4中基本数据类型——整型、浮点型、指针和聚合类型(如数组和结构等);所有其他类型都是从这4种基本类型的某种变化或组合派生而来。

一、整型家族

整型家族包括char、shortint、int和longint,并且都分为signed和unsigned型。

int型字长问题:

long int型至少应该和int型一样长,而int型至少应该和shortint一样长。

int型长度到底是几个字节? int变量的字节长度为

①C/C++规定int字长和机器字长相同;

② 操作系统字长和机器字长未必一致;

③ 编译器根据操作系统字长来定义int字长;

http://www.programfan.com/club/showbbs.asp?id=145906

由上面三点可知,在一些没有操作系统的嵌入式计算机系统上,int的长度与处理器字长一致;有操作系统时,操作系统的字长与处理器的字长不一定一致,此时编译器根据操作系统的字长来定义int字长:“比如你在64位机器上运行DOS16系统,那么所有fordos16的C/C++编译器中int都是16位的;在64位机器上运行win32系统,那么所有forwin32的C/C++编译器中int都是32位的”。(CPU的“字长”是指其一条指令/一次运算可以处理的数据的最大宽度。http://www.cublog.cn/u/23458/showart.php?id=175995)

另外,对于整型的数值范围,每个编译器里面都有一个标准头文件:limits.h,这个头文件定义了一些宏,这些宏表示该编译器使用的所有数据类型的范围,编程过程中使用这些宏就行了。例如你想要的int的最大值可以使用宏INT_MAX,最小值使用INT_MIN,而无符号则可以使用UINT_MAX,还有其它类型的。你自己把这个头文件打开看看就知道了。

附:关于“整形变量为32位”的问题的剖析:

http://bbs.cpcw.com/viewthread.php?tid=666146

整形变量是不是32位这个问题不仅与具体的CPU架构有关,而且与编译器有关。在嵌入式系统的编程中,一般整数的位数等于CPU字长,常用的嵌入式CPU芯片的字长为8、16、32,因而整形变量的长度可能是8、16、32。在未来64位平台下,整形变量的长度可达到64位。

长整形变量的长度一般为CPU字长的2倍。

在数据结构的设计中,优秀的程序员并不会这样定义数据结构(假设为WIN32平台):

typedef struct tagTypeExample

{

unsigned short x;

unsigned int y;

}TypeExample;

他们这样定义:

#define unsigned short UINT16 //16位无符号整数

#define unsigned int UINT32 //32位无符号整数

typedef struct tagTypeExample

{

UINT16 x;

UINT32 y;

}TypeExample;

这样定义的数据结构非常具有通用性,如果上述32平台上的数据发送到16位平台上接收,在16位平台上仅仅需要修改UINT16、UINT32的定义:

#define unsigned int UINT16 //16位无符号整数

#define unsigned long UINT32 //32位无符号整数

几乎所有的优秀软件设计文档都是这样定义数据结构的。

char型与程序可移植性:

char类型变量在本质上是小整型值。

字符型(char型)也分signedchar和unsignedchar型,如果在定义变量时只使用关键字char,缺省情况下它根据编译器的定义为signedchar或unsignedchar,这意味着不同机器上的char可能有不同的取值范围。因此,只有当程序使用的char型变量的值位于signedchar和unsignedchar的交集中(例如编译器认为char为8位二进制长时,这个交集是0~127,ASCⅡ字符集的字符都在这个范围内),这个程序才是可移植的。

进一步,如果显示地将字符变量声明为signed或unsigned,则可提高程序的可移植性,不过,有些机器处理signedchar和unsignedchar的能力是不同的,硬性规定后可能会使效率受损,还有不少处理字符的库函数的参数声明为char,因此显示声明也可能会有兼容性问题。

结论:保证可移植性的最佳办法还是定义为char型同时只使用signedchar和unsignedchar型的交集字符,在进行算术运算时,可根据需要再使用显示地声明或者强制转换。

  

爱华网本文地址 » http://www.aihuau.com/a/25101011/43437.html

更多阅读

我的记者生涯12 :“你是第一个采访我们火化工的记者”

我的记者生涯(12):“你是第一个采访我们火化工的记者!”记者们都知道, 跑民政口是最没油水的,因此也最不爱跑民政口。但是我一直没放弃跑民政口,因为采访民政口,既受教育,又有内容,写成文章可读性强。民政口服务的对象主要是三种人:一是“最可

教你几个足球带球过人的技巧 足球简单过人技巧教学

教你几个足球带球过人的技巧——简介 日常生活中有很多朋友热爱足球运动。过人是足球运动里很华丽的动作,足球过人的方式有很多,要想学会这项技术,就要掌握足球过人技巧,今天就与大家分享足球过人的技巧,教你怎样过人。教你几个足球带球

无理数的尾数是几在何? 初2无理数数学题

《就事论事》(节选):无理数的尾数是几在何? 易亚苏 无理数从发觉根号2始。因无理数的介入,原本清晰的数概念,变得有几分莫名。无理数的诞生,拓展了数的概念,扩大了数的领域,反而模糊了对数的领悟。 有得有失,义广含多。不失不得,意少物明。 无

党的生日到底是哪一天? 今天是党的生日

党的生日到底是哪一天?把“七一”作为党的生日,可以上溯到延安时期。当时在延安,只有毛泽东、董必武两人出席了一大,但他们只记得是在7月份,具体的日期则记不清了,于是就象征性地选择了7月的第一天作为建党纪念日。但是,作为历史,纪念日并

声明:《int型长度到底是几个字节? int变量的字节长度为》为网友缺點诗意分享!如侵犯到您的合法权益请联系我们删除