C语言常见类型占用字节数
前言
最近笔试经常遇到c语言各类型变量所占字节数的问题,这里做一个总结好了。
类型
常见的有char、int、long、short、float、double及指针等.
字符类型
这里单只char,char变量在内存中存储的是字符对应的ASCII码值。所以长度也是固定的,为1个字节。
整数类型
查了资料发现对各个类型的整数占用字节数是有一个规定的,虽然16位32位或者64位的机子各种类型所占用的长度并不一样。规则如下:
- short 至少占用2个字节。
- int 建议为一个机器字长。32位环境下机器字长为4字节,64位环境下机器字长为8字节。
- short 的长度不能大于 int,long 的长度不能小于 int。
所以说,short并不一定短,long并不一定短,有可能都和int一样长。
浮点数(小数)
C中浮点数有两种,float和double,不像整数,小数的长度始终是固定的,float占用4个字节,double占用8个字节。
指针
C中指针即为地址,所以编辑器的寻址空间则是指针的地址范围。所以指针变量在32位机器的寻址空间为2^32,要将所有地址都表示出来则需要为4个字节长度,所以要占用4个字节长度。同理64位的编译器则需要8个字节长度。
查看所占用的长度
可以使用sizeof()来查看所占用的长度,如下:
#include <iostream>
#include <vector>
using namespace std;
int main(int argc, const char * argv[]) {
// insert code here...
char *p;
cout<<"char: "<<sizeof(char)<<endl;
cout<<"int: "<<sizeof(int)<<endl;
cout<<"short: "<<sizeof(short)<<endl;
cout<<"long: "<<sizeof(long)<<endl;
cout<<"*: "<<sizeof(p)<<endl;
cout<<"float: "<<sizeof(float)<<endl;
cout<<"double: "<<sizeof(double)<<endl;
return 0;
}
输出结果如下:
char: 1
int: 4
short: 2
long: 8
*: 8
float: 4
double: 8
参考
C语言常见类型占用字节数的更多相关文章
- Java基本类型占用字节数(或 bit数)
背景:面试时候问到int类型占用几个字节,以及表示的大小,居然一脸懵逼,任何细节都不能放过. Java基本类型占用字节数(或 bit数) java是跨平台的语言,所以不论在什么系统中这些东西在内存中所 ...
- java中基本类型占用字节数
之前一直使用c/c++开发c中各种类型占用的位数和java还是有区别的,特地找了篇文章过来对比下. 在处理网络协议的时候需要注意 在Java中一共有8种基本数据类型,其中有4种整型,2种浮点类型,1种 ...
- java类型占用字节数&类型转换
1.整型类型 存储需求 bit数 取值范围 备注int 4字节 4*8 short ...
- C#中基本类型占用字节数
bool -> System.Boolean (布尔型,其值为 true 或者 false) byte -> System.Byte (字节型,占 1 字节,表示 8 位正整数,范围 0 ...
- C语言基本类型的字节数
- 【C语言】结构体占用字节数及存储与空间分配
我们都知道在数据类型中,char类型占1个字节,short占2个字节,int占4个字节,long占8个字节等等. 在计算结构体大小时需要考虑其内存布局,结构体在内存中存放是按单元存放的,每个单元多大取 ...
- C语言语法之占用字节
指针占用字节 指针即为地址,存的是变量的地址,在同一架构下地址长度都是相同的(cpu的最大寻址内存空间),所以不同类型的指针长度都一样. 指针占用几个字节跟语言无关,而是跟系统的寻址能力有关,16为地 ...
- Java的8种基本数据类型的内存占用字节数和取值范围
这是8中基本类型的内存中占用字节数(取值范围是2的(字节数X8-1)次方) 1.整型 类型 存储需求 bit数 取值范围 byte 1字节 1*8 -128-127 short 2字节 2*8 -32 ...
- c语言的结构体字节数统计
struct结构体的字节数 等于 结构体中最大类型的字节数的倍数. 如: typedef struct Student{ short id; //2个字节 char name[15]; / ...
随机推荐
- SSIS 通过添加脚本组件 自定义转换数据
问题:从mysql导入到sql的汉字都是乱码或者干脆导入不成功,报”截断字符串“错误,错在mysql当时建立的都是使用的默认编码latin1;搞不明白,又不是瑞典人,你用这个干毛.导致现在遇到n多问题 ...
- fetch_20newsgroups 数据集导入失败: no handlers could be fetch_20newsgroups
最简单的办法 下载'20news-bydate.pkz', 放到C:\\Users\[Current user]\scikit_learn_data 下边就行. 实际上 scikit learning ...
- 3-1 Linux文件管理类命令详解
根据马哥Linux初级 03-01整理 1. 目录管理 ls cd pwd mkdir rmdir tree 2. 文件管理 touch stat file rm cp mv nano 3. 日期时间 ...
- [转]如何在ASP.NET Core中实现一个基础的身份认证
本文转自:http://www.cnblogs.com/onecodeonescript/p/6015512.html 注:本文提到的代码示例下载地址> How to achieve a bas ...
- 1.认识EJB
什么是EJB?1. Enterprice JavaBeans(EJB)是一个用于分布式业务应用的标准服务端组件模型. . 采用EJB架构编写的应用是可伸的.事务性的.多用户安全的. . 采用EJB编写 ...
- hibernate缓存
http://www.cnblogs.com/wean/archive/2012/05/16/2502724.html http://www.cnblogs.com/xiaoluo501395377/ ...
- ubuntu 14.04 以root权限启动chrome
chrome版本 51.0.2704.103 How to run google chrome as root in linux - Unix & Linux Stack Exchange提示 ...
- CWMP开源代码研究2——easycwmp安装和学习
声明:本文是对开源程序代码学习和研究,严禁用于商业目的. 如有任何问题,欢迎和我交流.(企鹅号:408797506) 本文所有笔记和代码可以到csdn下载:http://download.csdn.n ...
- Remove Duplicates from Sorted List II
Remove Duplicates from Sorted List II Given a sorted linked list, delete all nodes that have duplica ...
- webapi相关知识
1.从uri中获取参数 :后端:[FromUri] 2.从uri中获取数组参数:后端:[FromUri]string[] type 前端:type[]=1&type[]=2&type ...