C++ 数据类型
在任何编程语言中编写程序时,您需要使用各种变量来存储各种信息。变量只是保留的内存位置,用于存储值。这意味着当您创建变量时,您在内存中保留了一些空间。
您可能希望存储各种数据类型的信息,例如字符、宽字符、整数、浮点数、双精度浮点数、布尔等。根据变量的数据类型,操作系统会分配内存并决定可以存储在保留内存中的内容。
原始内置类型
C++为程序员提供了丰富的内置和用户定义的数据类型。下表列出了七种基本的C++数据类型-
Type | Keyword |
---|---|
Boolean | bool |
Character | char |
Integer | int |
Floating point | float |
Double floating point | double |
Valueless | void |
Wide character | wchar_t |
以下是几种基本类型,可以使用一个或多个类型修饰符进行修改:
- signed
- unsigned
- short
- long
下表显示了变量的类型、存储值所需的内存大小,以及该类型变量可以存储的最大和最小值。
类型 | 典型位宽 | 典型范围 |
---|---|---|
char | 1字节 | -127 到 127 或 0 到 255 |
unsigned char | 1字节 | 0 到 255 |
signed char | 1字节 | -127 到 127 |
int | 4字节 | -2147483648 到 2147483647 |
unsigned int | 4字节 | 0 到 4294967295 |
signed int | 4字节 | -2147483648 到 2147483647 |
short int | 2字节 | -32768 到 32767 |
unsigned short int | 2字节 | 0 到 65,535 |
signed short int | 2字节 | -32768 到 32767 |
long int | 8字节 | -9223372036854775808 到 9223372036854775807 |
signed long int | 8字节 | 与long int相同 |
unsigned long int | 8字节 | 0 到 18446744073709551615 |
long long int | 8字节 | -(2^63) 到 (2^63)-1 |
unsigned long long int | 8字节 | 0 到 18,446,744,073,709,551,615 |
float | 4字节 | |
double | 8字节 | |
long double | 12字节 | |
wchar_t | 2或4字节 | 一个宽字符 |
变量的大小可能与上表中显示的大小不同,这取决于您使用的编译器和计算机。
以下是一个示例,它会在您的计算机上生成各种数据类型的正确大小。
#include <iostream>
using namespace std;
int main() {
cout << "Size of char : " << sizeof(char) << endl;
cout << "Size of int : " << sizeof(int) << endl;
cout << "Size of short int : " << sizeof(short int) << endl;
cout << "Size of long int : " << sizeof(long int) << endl;
cout << "Size of float : " << sizeof(float) << endl;
cout << "Size of double : " << sizeof(double) << endl;
cout << "Size of wchar_t : " << sizeof(wchar_t) << endl;
return 0;
}
这个例子使用了 endl ,它在每一行后面插入一个换行符,并且使用<<操作符将多个值传递给屏幕。我们还使用 sizeof() 操作符来获取各种数据类型的大小。
当上述代码被编译并执行时,它会产生下面的结果,这个结果可能因机器而异:
Size of char : 1
Size of int : 4
Size of short int : 2
Size of long int : 4
Size of float : 4
Size of double : 8
Size of wchar_t : 4
以下是另一个例子:
#include <iostream>
#include <limits>
using namespace std;
int main() {
std::cout << "Int Min " << std::numeric_limits<int>::min() << endl;
std::cout << "Int Max " << std::numeric_limits<int>::max() << endl;
std::cout << "Unsigned Int Min " << std::numeric_limits<unsigned int>::min() << endl;
std::cout << "Unsigned Int Max " << std::numeric_limits<unsigned int>::max() << endl;
std::cout << "Long Int Min " << std::numeric_limits<long int>::min() << endl;
std::cout << "Long Int Max " << std::numeric_limits<long int>::max() << endl;
std::cout << "Unsigned Long Int Min " << std::numeric_limits<unsigned long int>::min() <<endl;
std::cout << "Unsigned Long Int Max " << std::numeric_limits<unsigned long int>::max() << endl;
}
typedef声明
你可以使用 typedef 为现有的类型创建一个新的名称。以下是使用typedef定义新类型的简单语法:
typedef type newname;
例如,以下代码告诉编译器feet是int的别名
typedef int feet;
现在,以下声明是完全合法的,将创建一个名为distance的整数变量
feet distance;
枚举类型
枚举类型声明了一个可选的类型名称以及一组零个或多个标识符,这些标识符可以用作该类型的值。每个枚举常量都是一个类型为枚举的常量。
创建一个枚举类型需要使用关键字 enum 。枚举类型的一般形式为:
enum enum-name { list of names } var-list;
在这里,enum-name是枚举类型的名称。名称列表用逗号分隔。
例如,以下代码定义了一个名为colors的颜色枚举和类型为color的变量c。最后,将c赋值为”blue”。
enum color { red, green, blue } c;
c = blue;
默认情况下,姓的值为0,名字的值为1,第三个名字的值为2,依此类推。但是您可以通过添加初始化器来为特定的名字赋予特定的值。例如,在下面的枚举中, 绿色 的值将为5。
enum color { red, green = 5, blue };
在这里, 蓝色 将会有一个值为6,因为每个名字将比前面的名字大一个。