浅析各种数据类型的取值范围 void

每次在用的时候对数据类型范围很模糊,到底会不会溢出,该不该用long long之类的,这次找了相关资料给总结下

  1. char 1 -128到126   
  2.  
  3. unsigned char 1 0到255   
  4.  
  5. short 2 -32,768到32,767   
  6.  
  7. unsigned short 2 0到65,535   
  8.  
  9. long 4 -2,147,483,648到2,147,483,648   
  10.  
  11. unsigned long 4 0到4,294,967,295   
  12.  
  13. int 4 同long   
  14.  
  15. unsigned int 4 同unsigned long   
  16.  
  17. float 4 1.2E-38到3.4E381   
  18.  
  19. double 8 2.2E-308到1.8E3082     
  20. bool 1 true或false  
  21.  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/p/2016604.html