小细节:关于C++各种变量的size问题。
2014-06-05 20:50
441 查看
C++中整形数据类型的范围都定义在了limits.h中,具体场景中可以从这个文件获取编译器具体实现方式。
ISO并没有规定大部分数据类型的长度,仅仅规定了sizeof(char)=1,但位长却是CHAR_BIT定义的。
32位机器中,int,long,指针都是32-bit。
在Unix 64位机器中,int是32位,但long和指针是64位。
在Windows 64位机器中,long
long和指针是64位,但long和int是32位。
另外,int也不一定偏是4个字节的,在SPARC64中,int是8个字节。
再说double和float,虽然ISO文档里没规定,但是又另外一个IEEE754文档做了规定,规定float是32位而double是64位,当然,你可以不遵循这个文档,但实际应用中,还没有操作系统架构不遵循这个文档。所以,你可以把float和double的长度看成是和平台无关的。
所以,以后也注意点,别一提到long就马上觉得是32位的,这要视平台而定,ISO文档里没有规定。
ISO并没有规定大部分数据类型的长度,仅仅规定了sizeof(char)=1,但位长却是CHAR_BIT定义的。
32位机器中,int,long,指针都是32-bit。
在Unix 64位机器中,int是32位,但long和指针是64位。
在Windows 64位机器中,long
long和指针是64位,但long和int是32位。
另外,int也不一定偏是4个字节的,在SPARC64中,int是8个字节。
再说double和float,虽然ISO文档里没规定,但是又另外一个IEEE754文档做了规定,规定float是32位而double是64位,当然,你可以不遵循这个文档,但实际应用中,还没有操作系统架构不遵循这个文档。所以,你可以把float和double的长度看成是和平台无关的。
所以,以后也注意点,别一提到long就马上觉得是32位的,这要视平台而定,ISO文档里没有规定。
相关文章推荐
- 注意访问器中的一个小细节,关于有访问器没有成员变量的问题
- c++中关于const的一些细节问题
- [C++] 关于FD_SETSIZE大小的问题
- 关于C/C++中全局变量的初始化问题的深入思考
- (5)关于Flume内存溢出的问题,此时会报各种莫名奇妙的异常,异常如下 [html] view plain copy print? <span style="font-size:18px;">org
- C++中有关各种变量声明和定义的问题
- [C++] 关于子类声明与父类同名同类型的成员变量的问题
- C++那些细节--extern关键字&&全局变量定义问题
- 关于c++的类中成员变量初始化问题+初始化列表中对应顺序问题!
- 关于C和C++不同源文件中重名变量的问题
- 关于链表的各种细节问题
- 关于C++全局变量声明的问题
- C/C++中关于函数调用结束后变量释放的问题
- 关于C++调用C函数或变量的问题
- 关于C/C++中switch语句case中变量不能初始化赋值的问题
- 关于C++中变量的别名的问题
- c++中switch case 中关于变量定义问题
- [笔试题 9][c/c++]关于成员变量,对象成员的初始化问题
- 关于C++中类的初始化列表中初始化变量顺序问题
- 关于C++的一些细节[二:简单变量]