每次在用的时候对数据类型范围很模糊,到底会不会溢出,该不该用long long之类的,这次找了相关资料给总结下
- char 1 -128到126
- unsigned char 1 0到255
- short 2 -32,768到32,767
- unsigned short 2 0到65,535
- long 4 -2,147,483,648到2,147,483,648
- unsigned long 4 0到4,294,967,295
- int 4 同long
- unsigned int 4 同unsigned long
- float 4 1.2E-38到3.4E381
- double 8 2.2E-308到1.8E3082
- bool 1 true或false
- long long [int] 64 0 ~ 2^64-1 =18,446,744,073,709,551,616 所占20位左右
从上表可以看出,int与long相同。那么,为什么C++还要区分这两种数据类型呢?实际上这是个遗留问题。在16位编程环境中,int要求2个字节而long要求4个字节。而在32位编程环境中,这两种数据都用4个字节存放
还有浮点型的强制转换int舍弃小数部分,如果保留有效位的话可以四舍五入
long long 的数据已经达到了20位的整数,所以大部分情况下可以处理大数,但是还要顾及时间复杂度,float和double更大了
long long在某些oj的g++编译器并不支持,提示wa,但是gcc却可以通过
原文链接: https://www.cnblogs.com/void/archive/2011/04/15/2016604.html
欢迎关注
微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍
原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/24067
非原创文章文中已经注明原地址,如有侵权,联系删除
关注公众号【高性能架构探索】,第一时间获取最新文章
转载文章受原作者版权保护。转载请注明原作者出处!