1、内置数据类型
基本内置类型 C++为程序员提供了丰富的内置数据类型以及用户自定义数据类型。以下表格列出了七种基本的 C++ 数据类型 -
类型 | 关键字 |
---|---|
布尔值 | bool |
字符 | char |
整数 | int |
浮点数 | float |
双精度浮点数 | double |
无值 | void |
宽字符 | wchar_t |
基本类型中的几种可以使用一个或多个类型修饰符进行修改 -
- signed
- unsigned
- short
- long
以下是一个示例,将在计算机上生成各种数据类型的正确大小。
演示示例:
#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()
运算符来获取各种数据类型的大小。
当上述代码被编译和执行时,它会产生如下结果,这些结果可能因计算机而异
以下表格显示了变量类型、在内存中存储值所需的内存量以及该类型变量所能存储的最大和最小值。
类型 | 典型位宽 | 典型范围 |
---|---|---|
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 字节 | 1 个宽字符 |
以上所示的变量大小可能会因使用的编译器和计算机不同而有所不同。
另外,以下是通过示例展示如何获取计算机上不同数据类型的大小和范围:
#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;
return 0;
}
此示例使用了 sizeof()
操作符获取不同数据类型的大小,并使用 std::numeric_limits
获取不同类型的最小值和最大值。
此外,代码中还介绍了 typedef
声明和枚举类型的使用方法。 typedef
可以用来创建新的类型名称,而枚举类型可用于定义一组常量,并可以为这些常量指定特定的值。
2、 typedef 声明
以使用 typedef 为现有类型创建一个新的名称。以下是使用 typedef 定义新类型的简单语法 -
typedef type newname;
例如,以下代码告诉编译器 feet
是 int
的另一个名称 -
typedef int feet;
现在,以下声明是完全合法的,它创建了一个名为 distance
的整数变量 -
feet distance;
实践代码:
#include <iostream>
using namespace std;
typedef int feet;
int main() {
feet distance = 5;
cout << "Distance: " << distance << " feet" << endl;
return 0;
}
上面的示例中,typedef int feet;
将 feet
定义为 int
的别名。然后在 main()
函数中,使用 feet
类型创建了一个整数变量 distance
并赋值为 5。最后打印出了距离的值。
3、枚举类型
枚举类型声明了一个可选的类型名称和一组零个或多个可用作该类型值的标识符。每个枚举器都是一个其类型为枚举的常量。
创建枚举需要使用关键字 enum
。枚举类型的一般形式是
enum enum-name { name 列表 } 变量列表;
在这里,enum-name
是枚举的类型名称。名称列表是逗号分隔的。
例如,以下代码定义了一个名为 color
的颜色枚举和类型为 color
的变量 c
。最后,将 c
赋值为 "blue"。
enum color { red, green, blue } c; c = blue;
默认情况下,第一个名称的值为 0,第二个名称的值为 1,第三个名称的值为 2,依此类推。但是您可以通过添加一个初始化器为名称指定特定的值。例如,在以下枚举中,green
将具有值 5。
enum color { red, green = 5, blue };
在这里,blue
将具有值 6,因为每个名称都比前一个名称大 1。
实践代码:
#include <iostream>
using namespace std;
enum Color { red, green = 5, blue };
int main() {
Color c = blue;
cout << "Value of red: " << red << endl;
cout << "Value of green: " << green << endl;
cout << "Value of blue: " << blue << endl;
cout << "Value of c: " << c << endl;
return 0;
}
在上述示例中,enum Color { red, green = 5, blue };
定义了一个名为 Color
的枚举类型。red
的默认值为 0,green
被赋值为 5,blue
没有赋值。在 main()
函数中,创建了一个 Color
类型的变量 c
,并赋值为 blue
。最后打印了三种颜色的值以及 c
的值。