C++中的string 字节类型占用多少个字节

关于C和C++中的基本数据类型int、long、long long、float、double、char、string的大小及表示范围 - xiewq的专栏 - CSDN博客
关于C和C++中的基本数据类型int、long、long long、float、double、char、string的大小及表示范围
一、基本类型的大小及范围的总结(以下所讲都是默认在32位操作系统下):
[注:] 字节:byte;位:bit。
1.短整型short:
所占内存大小:2byte=16bit;
所能表示范围:-;(即-2^15~2^15-1)
2.整型int:
所占内存大小:4byte=32bit;
所能表示范围:-~;(即-2^31~2^31-1)
2.1 整型unsigned:
所占内存大小:4byte=32bit;
所能表示范围:0~;(即0~2^32-1)
3.长整型long:
所占内存大小:4byte=32bit;
所能表示范围:-~;(即-2^31~2^31-1)
3.1 长整型unsigned long:
所占内存大小:4byte=32bit;
所能表示范围:0~;(即0~2^32-1)
[注:] 上面所说的全部是有符号型的,short,int,long都默认为有符号型,其中long和int都占4个字节的空间大小,他们有什么区别呢?
16位操作系统:long:4字节,int:2字节
32位操作系统:long:4字节,int:4字节
64位操作系统:long:8字节,int:4字节
int型在不同位数操作系统中所占用的字节数不同,如果想编写可移植性好的程序,早年流行16位和32位操作系统时最好用long修饰int型,现在流行32位和64位操作系统,用int就挺多了。当然这些都看你怎么去理解它了,毕竟它们在不同操作系统所占字节数不固定,所以各自都有其适用之处,不可定论其好坏。
下面是对它们的有科学依据的规定:
C语言规定:无论什么平台都要保证long型占用字节数不小于int型, int型不小于
4.字符型char:
所占内存大小:1byte=8bit;
所能表示范围:不确定!!!!;
4.1 unsigned char:
所占内存大小:1byte=8bit;
所能表示范围:0~255;(0~2^8-1)
4.2 singned char:
所占内存大小:1byte=8bit;
所能表示范围:-128~127;(-2^7~2^7-1)
[注:] char的默认类型不确定有可能是unsigned,也有可能是signed,主要更具编译器而定,可以自己测试一下编译器的默认char的符号类型。
5.布尔类型bool:
所占内存大小:1byte=8bit;
所能表示的范围:只能取两个值false或者true;所以最小值就是:0, 最大值:1.
6.单精度float:
所占内存大小:4byte=32bit;
所能表示的范围:(1.1)~(3.4);
//注意:浮点数在内存中都是按科学计数法来存储 的,浮点数的精度是由尾数的位数决定 的,大家记住即可不必深究;
7.双精度double:
所占内存大小:8byte=32bit;
所能表示的范围:(2.2)~(1.7);
[注:] 如何区分和使用这两个浮点类型呢,首先float和double的精度不同,float保留到小数点后面7位,而double保留到小数点后面16位,float能保证6位有效数字,而double能保证15位有效数字,如果在不追求精度的的情况下当然用 float比较好,节省内存,如果需要很高的精度的情况下,最好还是用double,平时我们定义浮点型变量一般都用double,毕竟精度高,一般精度的损失是不能忽略的。
8.字符串string:
[注:] 由于string在c++中属于类类型,不是基本数据类型,类不能计算其在内存中所占大小,非要用sizeof(string)来算的话,一般算出来的结果是 sizeof(string)=4byte,
如果string字符串内容很多,很明显就不是其真实大小,string类里面有计算其字节大小的函数如:size(),length()。
我的热门文章2012年4月 C/C++大版内专家分月排行榜第一
2012年11月 Linux/Unix社区大版内专家分月排行榜第二2011年8月 Linux/Unix社区大版内专家分月排行榜第二2008年10月 C/C++大版内专家分月排行榜第二
2012年8月 Linux/Unix社区大版内专家分月排行榜第三
2007年7月 C/C++大版内专家分月排行榜第一2007年6月 C/C++大版内专家分月排行榜第一2007年5月 C/C++大版内专家分月排行榜第一2007年4月 C/C++大版内专家分月排行榜第一2007年3月 C/C++大版内专家分月排行榜第一2007年2月 C/C++大版内专家分月排行榜第一2007年1月 C/C++大版内专家分月排行榜第一2006年12月 C/C++大版内专家分月排行榜第一2006年11月 C/C++大版内专家分月排行榜第一2006年9月 C/C++大版内专家分月排行榜第一2006年8月 C/C++大版内专家分月排行榜第一2006年7月 C/C++大版内专家分月排行榜第一2006年6月 C/C++大版内专家分月排行榜第一2006年5月 C/C++大版内专家分月排行榜第一2006年4月 C/C++大版内专家分月排行榜第一2006年3月 C/C++大版内专家分月排行榜第一2005年8月 C/C++大版内专家分月排行榜第一
2007年8月 C/C++大版内专家分月排行榜第二2006年10月 C/C++大版内专家分月排行榜第二
本帖子已过去太久远了,不再提供回复功能。C++ 中空类对象为什么占一个字节? - 知乎96被浏览6338分享邀请回答/articles/article.aspx?p=31473&seqNum=237添加评论分享收藏感谢收起346 条评论分享收藏感谢收起查看更多回答新手园地& & & 硬件问题Linux系统管理Linux网络问题Linux环境编程Linux桌面系统国产LinuxBSD& & & BSD文档中心AIX& & & 新手入门& & & AIX文档中心& & & 资源下载& & & Power高级应用& & & IBM存储AS400Solaris& & & Solaris文档中心HP-UX& & & HP文档中心SCO UNIX& & & SCO文档中心互操作专区IRIXTru64 UNIXMac OS X门户网站运维集群和高可用服务器应用监控和防护虚拟化技术架构设计行业应用和管理服务器及硬件技术& & & 服务器资源下载云计算& & & 云计算文档中心& & & 云计算业界& & & 云计算资源下载存储备份& & & 存储文档中心& & & 存储业界& & & 存储资源下载& & & Symantec技术交流区安全技术网络技术& & & 网络技术文档中心C/C++& & & GUI编程& & & Functional编程内核源码& & & 内核问题移动开发& & & 移动开发技术资料ShellPerlJava& & & Java文档中心PHP& & & php文档中心Python& & & Python文档中心RubyCPU与编译器嵌入式开发驱动开发Web开发VoIP开发技术MySQL& & & MySQL文档中心SybaseOraclePostgreSQLDB2Informix数据仓库与数据挖掘NoSQL技术IT业界新闻与评论IT职业生涯& & & 猎头招聘IT图书与评论& & & CU技术图书大系& & & Linux书友会二手交易下载共享Linux文档专区IT培训与认证& & & 培训交流& & & 认证培训清茶斋投资理财运动地带快乐数码摄影& & & 摄影器材& & & 摄影比赛专区IT爱车族旅游天下站务交流版主会议室博客SNS站务交流区CU活动专区& & & Power活动专区& & & 拍卖交流区频道交流区
小富即安, 积分 3627, 距离下一级还需 1373 积分
论坛徽章:78
请问大家如何确定 short int long 这些C语言中的基本类型占用几个字节的?
除了printf(&%d&,sizeof(int))还有其他的办法吗?
&&nbsp|&&nbsp&&nbsp|&&nbsp&&nbsp|&&nbsp&&nbsp|&&nbsp
丰衣足食, 积分 945, 距离下一级还需 55 积分
论坛徽章:0
没什么好办法,因为c规定是:int字长和机器字长相同,int不大于机器长度, long int型至少应该和int型一样长。注意那个至少,不同的编译器就可以有不同的理解。
所以还是linux的数据类型定义比较好: int8_t, int16_t, int32_t, uint32_t等,一目了然。
巨富豪门, 积分 23916, 距离下一级还需 16084 积分
论坛徽章:59
这个我知道啊, 分别有
sizeof(short)
sizeof(int)
sizeof(long)
小富即安, 积分 3627, 距离下一级还需 1373 积分
论坛徽章:78
看来还是直接用这些可移植的类型比较好!}

我要回帖

更多关于 java string 字节长度 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信