Java篇

最近被算法题目里面的最大值和最小值搞的头昏脑胀, 下面我来说一下普通(小孩子都会可是我不会)的各个数据类型以及常用类的大小吧!

类型 长度/B=8bit 范围
byte 1 -128~127
boolean 1 true Or false
int 4 -231~231-1 ,也就是(-2147483648~2147483647),记住2*109
short 2 -32768~32767
long 8 -9223372036854775808 ~ 9223372036854775807,记住是9*1019
char 2 ASCII码为0~65535的的字符
float 4 -3.4E38~3.4E38
double 8 -1.7E308~1.7E308

如何在程序中表示最大值和最小值呢?
我们直到在Java中对常用数据类型进行了包装,那么我们可以调用这些包装类的方法属性来获得:

  1. public static void main(String[] args) {
  2. //获得各个类型的最大值和最小值
  3. System.out.println(Integer.MAX_VALUE);
  4. System.out.println(Integer.MIN_VALUE);
  5. System.out.println(Long.MAX_VALUE);
  6. System.out.println(Long.MIN_VALUE);
  7. System.out.println(Short.MAX_VALUE);;
  8. System.out.println(Short.MIN_VALUE);
  9. System.out.println(Double.MAX_VALUE);
  10. System.out.println(Double.MIN_VALUE);
  11. }
  12. 结果:
  13. Integer: 2147483647 -2147483648
  14. Long: 9223372036854775807 -9223372036854775808
  15. Short: 32767 -32768
  16. Double: 1.7976931348623157E308 4.9E-324

所以我们可以在程序中调用包装类的属性表示了。

C++篇

C++定义的基本数据类型和Java的相似,但是有几个其他几个数据类型需要说一下:

类型 长度/B=8bit 范围
long 4 0 ~ 18,446,744,073,709,551,615
unsigned short int 2 -2147483648~2147483647
wchar_t 2 或 4 个字节 1 个宽字符
long long(C11) 8 9223372036854775808~+9223372036854775807(约9*1019左右)

wchar_t: typedef short int wchar_t;,所以 wchar_t 实际上的空间是和 short int 一样,通过函数来获得各个类型的最大值和最小值:

  1. #include<iostream>
  2. #include <climits> //导入Climits模板
  3. using namespace std;
  4. int main()
  5. {
  6. cout << "char: \t\t" << "所占字节数:" << sizeof(char);
  7. cout << "\t最大值:" << CHAR_MAX; //变量名
  8. cout << "\t\t最小值:" << CHAR_MIN << endl;
  9. cout << "int: \t\t" << "所占字节数:" << sizeof(int);
  10. cout << "\t最大值:" << INT_MAX;
  11. cout << "\t\t最小值:" << INT_MIN << endl;
  12. cout << "unsigned: \t" << "所占字节数:" << sizeof(unsigned);
  13. cout << "\t最大值:" << UINT_MAX;
  14. cout << "\t\t最小值:" << UINT_MAX << endl;
  15. cout << "long: \t\t" << "所占字节数:" << sizeof(long);
  16. cout << "\t最大值:" << LONG_MAX;
  17. cout << "\t\t最小值:" << LONG_MIN << endl;
  18. cout << "type: \t\t" << "************size**************"<< endl;
  19. return 0;
  20. }
  21. 结果:
  22. char: 所占字节数:1 最大值:127 最小值:-128
  23. int: 所占字节数:4 最大值:2147483647 最小值:-2147483648
  24. unsigned: 所占字节数:4 最大值:4294967295 最小值:4294967295
  25. long: 所占字节数:4 最大值:2147483647 最小值:-2147483648
  26. type: ************size**************

注意:long longlong long int是一样的,同样longlong int也是一样的。
long是4个字节,long long是8个字节。