c++ 变量字节数
之前在网上看变量所占的字节数取决于机器字长与编译器,即X64和X86编译配置下的变量字节数不同,用自己的计算机试了一下,结果如下:
#define _CRT_SECURE_NO_WARNINGS
#include "stdio.h"
int main()
{
int l=1;
while (l)
{
printf("变量 字节 \n");
printf("bool: %d \n",sizeof(bool));
printf("char: %d \n", sizeof(char));
printf("short: %d \n", sizeof(short));
printf("int: %d \n", sizeof(int));
printf("long: %d \n", sizeof(long));
printf("long long: %d \n", sizeof(long long));
printf("float: %d \n", sizeof(float));
printf("double: %d \n", sizeof(double));
printf("long double: %d \n", sizeof(long double));
printf("变量指针 字节 \n");
printf("bool*: %d \n", sizeof(bool*));
printf("char*: %d \n", sizeof(char*));
printf("short*: %d \n", sizeof(short*));
printf("int*: %d \n", sizeof(int*));
printf("long*: %d \n", sizeof(long*));
printf("long long*: %d \n", sizeof(long long*));
printf("float*: %d \n", sizeof(float*));
printf("double*: %d \n", sizeof(double*));
printf("long double*: %d \n", sizeof(long double*));
l = 0;
}
return 0;
}
X86 X64
整理成表格:
变量类型 | X86 | X64 |
---|---|---|
bool | 1字节 | 1字节 |
char | 1字节 | 1字节 |
short | 2字节 | 2字节 |
int | 4字节 | 4字节 |
long | 4字节 | 4字节 |
long long | 8字节 | 8字节 |
float | 4字节 | 4字节 |
double | 8字节 | 8字节 |
long double | 8字节 | 8字节 |
各类指针 | 4字节 | 8字节 |
可见除了指针不同,X86和X64中基本变量的字节相同,X86中指针都占4字节,X64指针都占8字节。因为1字节(byte)等于8位(bit),所以不难理解32位和64位系统的指针字节数。