C++ 中的整型是基本的数据类型之一,用于表示没有小数部分的数。这包括正整数、负整数以及零。C++ 提供了多种整型,以适应不同大小的数值需求和优化内存使用。
C++ 中的整型可以根据其大小(即占用的字节数)和能够表示的数值范围来分类。下表概述了 C++ 中常见的整型,包括它们的名称和在大多数现代编译器和系统中的典型占用空间。需要注意的是,实际的大小可能根据编译器和目标平台的架构(如 32 位或 64 位系统)而有所不同。
类型 | 典型大小 (字节) | 取值范围(有符号) | 说明 |
---|---|---|---|
short int 或 short |
2 | -32,768 至 32,767 | 短整型,用于节省内存空间,适合存储较小的整数值。 |
int |
4 | -2,147,483,648 至 2,147,483,647 | 最常用的整型,适用于一般整数运算。 |
long int 或 long |
4 或 8 | 32 位:-2,147,483,648 至 2,147,483,647 64 位:-9,223,372,036,854,775,808 至 9,223,372,036,854,775,807 |
长整型,大小可能等于或大于 int ,在 64 位系统中通常更大,用于更大范围的整数。 |
long long int 或 long long |
8 | -9,223,372,036,854,775,808 至 9,223,372,036,854,775,807 | 提供最大的整数范围,用于需要非常大数值的场合。 |
在 C++ 中,输出整型变量的值通常使用 std::cout
对象,它是标准输出流。std::cout
位于
头文件中,并且是用来向控制台(或其他标准输出设备)发送输出的。输出操作通过 <<
运算符(插入运算符)完成,该运算符用于将数据从程序发送到标准输出流。
输出整型变量的基本语法是:
std::cout << variable;
这里,variable
是你想要输出的整型变量。
#include
int main() {
int myInt = 10;
std::cout << "The value of myInt is: " << myInt << std::endl;
return 0;
}
运行结果
在这个示例中,myInt
是一个整型变量,其值被初始化为 10。使用 std::cout
输出一段文本,后面跟着 myInt
的值,最后是一个换行符(通过 std::endl
)。
C++ 还提供了一些方法来格式化输出,例如设置字段宽度、填充字符和数值基数(十进制、十六进制、八进制)。
使用 std::setw
来设置下一个输出字段的宽度。std::setw
需要
头文件。
#include
#include
int main() {
int myInt = 42;
std::cout << "The value of myInt is: "<< myInt << std::endl;
std::cout << "The value of myInt is: " << std::setw(10) << myInt << std::endl;
return 0;
}
在这个示例中,std::setw(10)
设置了字段宽度为 10,因此输出的数字将在一个 10 字符宽的字段中右对齐显示。
使用 std::setfill
来设置填充字符,这也需要
头文件。
#include // 包含输入输出流
#include // 包含格式化输出的库
int main() {
int myInt = 42; // 定义一个整型变量并初始化
// 使用std::cout输出myInt,设置字段宽度为10,不足部分用'*'填充
std::cout << std::setfill('*') << std::setw(10) << myInt << std::endl;
return 0; // 表示程序正常结束
}
如果 myInt
值为 42,这将输出"********42",因为字段宽度为 10,不足部分用 *
填充。
使用 std::hex
、std::oct
和 std::dec
可以设置十六进制、八进制和十进制输出。
#include // 包含标准输入输出流库
int main() {
int myInt = 42; // 定义一个整型变量并初始化
// 使用十六进制格式输出myInt的值
std::cout << "Hex: " << std::hex << myInt << std::endl;
// 使用八进制格式输出myInt的值
std::cout << "Oct: " << std::oct << myInt << std::endl;
// 使用十进制格式输出myInt的值
std::cout << "Dec: " << std::dec << myInt << std::endl;
return 0; // 表示程序正常结束
}
在这个例子中使用 std::cout
和 std::hex
以十六进制格式输出 myInt
的值。输出将以"Hex: "开头,后跟 myInt
的十六进制表示。然后,使用 std::cout
和 std::oct
以八进制格式输出 myInt
的值。输出将以"Oct: "开头,后跟 myInt
的八进制表示。最后,使用 std::cout
和 std::dec
以十进制格式输出 myInt
的值。输出将以"Dec: "开头,后跟 myInt
的十进制表示。
在 C++ 中,整型数据的输入是通过标准输入流 std::cin
来完成的,这是一个与 std::cout
相对的输入流对象。std::cin
位于
头文件中,并且主要用于从标准输入设备(通常是键盘)读取数据。
要从标准输入读取一个整型变量,基本的语法结构如下:
type variable;
std::cin >> variable;
这里的 type
是整型数据的类型(例如,int
、short
、long
、long long
等),而 variable
是变量的名称。
#include
int main() {
int number;
std::cout << "Please enter an integer: ";
std::cin >> number;
std::cout << "You entered: " << number << std::endl;
return 0;
}
在这个示例中,程序首先提示用户输入一个整数,然后使用 std::cin
从键盘读取输入,并将输入的值存储到名为 number
的变量中。最后,程序使用 std::cout
输出用户输入的值。
在实际应用中,用户的输入可能不总是符合预期。例如,当期望输入一个整数时,用户可能输入了一个字符或字符串,这会导致 std::cin
进入错误状态,随后的输入操作将会失败。
为了处理这种情况,需要检查 std::cin
的状态,并在发现错误时采取措施。这通常涉及到两个步骤:清除错误标志和丢弃错误输入。
#include
#include
int main() {
int number;
std::cout << "Please enter an integer: ";
while (!(std::cin >> number)) {
std::cin.clear(); // 清除错误标志
std::cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n'); // 丢弃错误输入直到下一个换行符
std::cout << "Invalid input. Please enter an integer: ";
}
std::cout << "You entered: " << number << std::endl;
return 0;
}
在这个改进的示例中,如果用户的输入导致 std::cin
进入错误状态,程序会使用 std::cin.clear()
来清除错误标志,然后使用 std::cin.ignore()
来丢弃错误的输入直到下一个换行符。这样,用户就有机会重新输入一个有效的整数。
std::cin
进行输入时,如果输入流中还有其他待处理的数据(如换行符),这些数据可能会影响后续的输入操作。在某些情况下,可能需要额外的 std::cin.ignore()
调用来处理这些额外的数据。std::cin
会导致未定义行为,这通常会导致变量存储最大或最小可能值,或者完全不可预测的值。