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位系统的指针字节数。
本文通过实验对比了X86与X64架构下C++基本变量和指针所占用字节数的差异,揭示了除指针外,基本变量在两种架构下的字节数保持一致的现象。
344

被折叠的 条评论
为什么被折叠?



