C++ 不同数据类型占据的内存空间大小
2014-06-27 12:58
435 查看
首先这个没有标准答案(或者说没有一个统一的标准), 除非我们加上限定词, 就是在多少位的计算机上。 现在假设我们的电脑是32位机(事实上, 我的电脑是32 位的)。
参考上图, 注意一下几点:
(1)int 的表达用了4bytes, 表示的范围还是很大的, 无符号的整型达到了0——429,467,295, 所以一般没有什么溢出问题, 不用考虑。
(2)signed int能够表示负整数。
(3)事实上, 有三种表示integer type , 分别是是short, int, long, 三者的size是按照 non-decreasing order。 int 一般代表short 或者long 在中的一种。一般而言, 你并不需要worry about 该选用哪一个类型, 除非你对memory usage 的 特别注意, 或者你使用的数字十分大, short 不满足要求, 非得使用long。类似的, 浮点数也有三种类型, 为float, double, long double, 精度也是逐渐升高(none-decreasing
order of precision)。 记住: 在计算机中, 对于实数(浮点数)的表示是不精确的。 这有点让人confusing, 因为int的表示的精度是高于浮点数例如double的精度的, It is!
还有几点注意, 参见下图:
测试程序如下(code::blocks):
运行结果如下:
参考上图, 注意一下几点:
(1)int 的表达用了4bytes, 表示的范围还是很大的, 无符号的整型达到了0——429,467,295, 所以一般没有什么溢出问题, 不用考虑。
(2)signed int能够表示负整数。
(3)事实上, 有三种表示integer type , 分别是是short, int, long, 三者的size是按照 non-decreasing order。 int 一般代表short 或者long 在中的一种。一般而言, 你并不需要worry about 该选用哪一个类型, 除非你对memory usage 的 特别注意, 或者你使用的数字十分大, short 不满足要求, 非得使用long。类似的, 浮点数也有三种类型, 为float, double, long double, 精度也是逐渐升高(none-decreasing
order of precision)。 记住: 在计算机中, 对于实数(浮点数)的表示是不精确的。 这有点让人confusing, 因为int的表示的精度是高于浮点数例如double的精度的, It is!
还有几点注意, 参见下图:
测试程序如下(code::blocks):
#include <iostream> using namespace std; int main() { int a1 = 1; int bytes_of_int = sizeof(a1); short a2 = 1; int bytes_of_short = sizeof(a2); long a3 = 1; int bytes_of_long = sizeof(a3); char b = '1';// char 型用单引号 int bytes_of_char = sizeof(b); bool c = true; int bytes_of_bool = sizeof(c); double d = 1.0; int bytes_of_double = sizeof(d); float e = 1.0; int bytes_of_float = sizeof(e); long double f = 1.0; int bytes_of_LongDouble = sizeof(f); cout << "int: " << bytes_of_int << endl; cout << "short: " << bytes_of_short << endl; cout << "long: " << bytes_of_long << endl; cout << "char: " << bytes_of_char << endl; cout << "bool: " << bytes_of_bool << endl; cout << "double: " << bytes_of_double << endl; cout << "float: " << bytes_of_float << endl; cout << "long double: " << bytes_of_LongDouble << endl; return 0; }
运行结果如下:
相关文章推荐
- C/C++中不同数据类型所占用的内存大小
- C/C++中基本数据类型在不同系统中所占空间大小
- C/C++中不同数据类型所占用的内存大小
- JAVA中基本数据类型所占内存空间大小
- C++在不同操作系统的基本数据类型字节大小(转)
- python 基本数据类型占用内存空间大小的实例
- C/C++ 不同数据类型所占内存
- C++中 没有数据成员的类的对象所占的内存空间大小问题
- C++里数据类型所占内存大小
- Java学习日记-2.3 基本数据类型和对象所占内存空间大小
- 例题2.2 计算数据类型所占内存空间大小
- python 基本数据类型占用内存空间大小
- C/C++学习之C提高----C程序数组排序、数据类型(大小,别名,封装)、变量、程序的内存四区模型(栈,堆,全局,代码区)
- C/C++中基本数据类型所占内存大小
- c++各种数据类型所占存储空间大小
- 【转】c++各种数据类型所占存储空间大小
- java 中基本数据类型在内存中占据的存储大小
- C++中基本的数据类型和所占的内存大小
- 计算机内存中的对齐和C++ 类的存储空间大小
- C语言数据类型所占空间大小