unsigned和signed所占位数相同。
ANSI/ISO制订的:
- sizeof(short int)<=sizeof(int)
- sizeof(int)<=sizeof(long int)
- short int至少应为16位(2字节)
- long int至少应为32位。
1. (unsigned) char
- 在所有位数的系统中,(unsigned) char 均占8位,1个字节。
2. (unsigned) short (int)
- 在所有位数系统中,(unsigned) short (int)占16位,2个字节。
3. int
- 在16位系统中,int占16位,2个字节。
- 在32位和64位系统中,int占32位,4个字节。
4. (unsigned)long (int)
- 在16位系统中,(unsigned)long (int)占16位,2个字节。
- 在32位系统中,(unsigned)long (int)占32位,4个字节。
- 在64位系统中,(unsigned)long (int)占64位,8个字节。
5. (unsigned)long long (int)
- 在所有系统中占64位,8个字节。
6. float
- 在所有系统中占32位,4个字节。
7. double
- 在所有系统中占64位,8个字节。
注: 关于指针变量的加减不是以字节为单位,而是以数据类型为单位。
#include <iostream>
using namespace std;
int main(void)
{
int *p, *q;
p = (int *)malloc(4);
cout << "p:" << p << endl;
q = p + 1;
cout << "q:"<< q << endl;
}
运行结果如下,可见q
比p
多了4个字节,即1个int
类型数据的大小。