您的位置:首页 - 教程 - C++ - 正文
C++之数据类型及其值的范围

  C++中的常用类型有bool、char、short、int、long、double、float、string等。这些数据类型满足了我们日常变成的需求。

  下面的代码用来打印出各数据类型对应的占字节数及其最大值和最小值。

 #include<iostream>
 #include<string>
 #include <limits>
 #include <climits>
 using namespace std;
 
 int main()
 {
     cout << "bool: \t\t" << "所占字节数:" << sizeof(bool);
     cout << "\t最大值:" << (numeric_limits<bool>::max)();
     cout << "\t\t\t最小值:" << (numeric_limits<bool>::min)() << endl;
     cout << "char: \t\t" << "所占字节数:" << sizeof(char);
     cout << "\t最大值:" << (numeric_limits<char>::max)();
     cout << "\t\t\t最小值:" << (numeric_limits<char>::min)() << endl;
     cout << "signed char: \t" << "所占字节数:" << sizeof(signed char);
     cout << "\t最大值:" << (numeric_limits<signed char>::max)();
     cout << "\t\t\t最小值:" << (numeric_limits<signed char>::min)() << endl;
     cout << "unsigned char: \t" << "所占字节数:" << sizeof(unsigned char);
     cout << "\t最大值:" << (numeric_limits<unsigned char>::max)();
     cout << "\t\t\t最小值:" << (numeric_limits<unsigned char>::min)() << endl;
     cout << "wchar_t: \t" << "所占字节数:" << sizeof(wchar_t);
     cout << "\t最大值:" << (numeric_limits<wchar_t>::max)();
     cout << "\t\t\t最小值:" << (numeric_limits<wchar_t>::min)() << endl;
     cout << "short: \t\t" << "所占字节数:" << sizeof(short);
     cout << "\t最大值:" << (numeric_limits<short>::max)();
     cout << "\t\t\t最小值:" << (numeric_limits<short>::min)() << endl;
     cout << "int: \t\t" << "所占字节数:" << sizeof(int);
     cout << "\t最大值:" << (numeric_limits<int>::max)();
     cout << "\t\t最小值:" << (numeric_limits<int>::min)() << endl;
     cout << "unsigned: \t" << "所占字节数:" << sizeof(unsigned);
     cout << "\t最大值:" << (numeric_limits<unsigned>::max)();
     cout << "\t\t最小值:" << (numeric_limits<unsigned>::min)() << endl;
     cout << "long: \t\t" << "所占字节数:" << sizeof(long);
     cout << "\t最大值:" << (numeric_limits<long>::max)();
     cout << "\t\t最小值:" << (numeric_limits<long>::min)() << endl;
     cout << "unsigned long: \t" << "所占字节数:" << sizeof(unsigned long);
     cout << "\t最大值:" << (numeric_limits<unsigned long>::max)();
     cout << "\t\t最小值:" << (numeric_limits<unsigned long>::min)() << endl;
     cout << "double: \t" << "所占字节数:" << sizeof(double);
     cout << "\t最大值:" << (numeric_limits<double>::max)();
     cout << "\t\t最小值:" << (numeric_limits<double>::min)() << endl;
     cout << "long double: \t" << "所占字节数:" << sizeof(long double);
     cout << "\t最大值:" << (numeric_limits<long double>::max)();
     cout << "\t\t最小值:" << (numeric_limits<long double>::min)() << endl;
     cout << "float: \t\t" << "所占字节数:" << sizeof(float);
     cout << "\t最大值:" << (numeric_limits<float>::max)();
     cout << "\t\t最小值:" << (numeric_limits<float>::min)() << endl;
     cout << "size_t: \t" << "所占字节数:" << sizeof(size_t);
     cout << "\t最大值:" << (numeric_limits<size_t>::max)();
     cout << "\t最小值:" << (numeric_limits<size_t>::min)() << endl;
     cout << "string: \t" << "所占字节数:" << sizeof(string);
     cout << "\t最大值:" << (numeric_limits<string>::max)();
     cout << "\t\t\t最小值:" << (numeric_limits<string>::min)() << endl;
     cout << "long long: \t" << "所占字节数:" << sizeof(long long);
     cout << "\t最大值:" << (numeric_limits<unsigned long long>::max)();
     cout << "\t最小值:" << (numeric_limits<unsigned long long>::min)() << endl;
     return 0;
 }

  程序的运行结果如下图所示。

  从程序运行的结果可以得出以下结论:

  • bool只有两个值,即true和false,在C++语言中可以分别用1和0来表示
  • 能表示小数的数据类型有三种:double、long double和float,其值分别可以占8位、16位和4位
  • 范围最大的整数数据类型是long long,在ACM大赛中常用来处理大数字

  对上述结果做如下补充解释:

  • wchar_t是C++中的一种8位的字符类型,其能表示的范围远超char
  • size_t是sizeof标识符返回的数据的类型,通常用于循环、数组索引、大小的存储和地址运算。其长度虽然与long long类型相同,但基本不会出现在程序中表示一个数字变量

评论: