【C++学习第九讲】C++ 整型介绍

文章目录

  • 一、理论
    • 1.1 总述
    • 1.2 char类型
    • 1.3 short类型
    • 1.4 int类型
    • 1.5 long类型
    • 1.6 long long类型
  • 二、代码示例
  • 三、细节问题
    • 3.1 查看每个整型的位数
    • 3.2 sizeof 函数
    • 3.3 limits 头文件

一、理论

1.1 总述

在 C++ 中,整型(Integer)是一种基本的数据类型,用于表示整数值。整型在计算机编程中非常常见,用于存储和操作整数数据。

C++提供了几种整型数据类型,每种类型有不同的大小和范围。以下是C++中常用的整型数据类型:

  1. char类型:char类型用于表示字符数据。它占用1个字节,可以表示256个不同的字符(根据ASCII码表)。可以使用单引号将字符值括起来,例如 ‘a’、‘b’ 等。
  2. short类型:short类型用于表示短整数,通常占用2个字节。它的取值范围是-32768到32767。
  3. int类型:int类型用于表示整数,通常占用4个字节。它的取值范围是-2147483648到2147483647。在大多数情况下,int类型是默认的整型类型。
  4. long类型:long类型用于表示长整数,通常占用4个字节或8个字节(取决于编译器和操作系统)。它的取值范围比int类型更大。
  5. long long类型:long long类型用于表示更大范围的整数,通常占用8个字节。它的取值范围比long类型更大。

C++还提供了一些无符号(unsigned)整型数据类型,这些类型只能表示非负数。例如,可以使用unsigned int表示非负整数。

整型数据类型可以进行常见的数学运算,如加法、减法、乘法和除法。此外,还可以使用比较运算符(如等于、大于、小于)对整数进行比较。

需要注意的是,在使用整型数据类型时,要确保选择适当的类型以满足数据的范围和精度要求,以避免数据溢出或精度丢失的问题。

1.2 char类型

  • 大小:占用1个字节。
  • 范围:可以表示256个不同的字符,根据ASCII码表。
  • 示例:
char ch = 'a';

1.3 short类型

  • 大小:通常占用2个字节。
  • 范围:取值范围为-32768到32767。
  • 示例:
short num = 10;

1.4 int类型

  • 大小:通常占用4个字节。
  • 范围:取值范围为-2147483648到2147483647。
  • 示例:
int num = 100;

1.5 long类型

  • 大小:根据编译器和操作系统的不同,可以占用4个字节或8个字节。
  • 范围:取值范围比int类型更大。
  • 示例:
long num = 1000000L;

1.6 long long类型

  • 大小:通常占用8个字节。
  • 范围:取值范围比long类型更大。
  • 示例:
long long num = 100000000000LL;

此外,C++还提供了每个整型类型的无符号版本,以表示非负数。例如,可以使用unsigned int表示非负整数。无符号整型类型的范围是0到最大正整数的两倍减一。

二、代码示例

#include
#include
#include
int main() {
	using namespace std;
	int n_int = INT_MAX;
	short n_short = SHRT_MAX;
	long n_long = LONG_MAX;
	long long n_long_long = LLONG_MAX;
	// 写出每个整型的字节数
	cout << "int is " << sizeof n_int << " bytes." << endl;
	cout << "short is " << sizeof n_short << " bytes." << endl;
	cout << "long is " << sizeof n_long << " bytes." << endl;
	cout << "long long is " << sizeof n_long_long << " bytes." << endl;
	// 输出每个整型的最大值
	cout << "maximum values : " << endl;
	cout << "int : " << n_int << "\n"
		<< "short : " << n_short << "\n"
		<< "long : " << n_long << "\n"
		<< "long long : " << n_long_long << "\n"
		<< endl;
	// 查看每个整型的位数
	cout << "int : " << CHAR_BIT * sizeof n_int << " bits." << "\n"
		<< "short : " << CHAR_BIT * sizeof n_short << " bits." << "\n"
		<< "long : " << CHAR_BIT * sizeof n_long << " bits." << "\n"
		<< "long long : " << CHAR_BIT * sizeof n_long_long << " bits." << "\n"
		<< endl;
	return 0;
}

输出结果为:

int is 4 bytes.
short is 2 bytes.
long is 4 bytes.
long long is 8 bytes.
maximum values :
int : 2147483647
short : 32767
long : 2147483647
long long : 9223372036854775807

int : 32 bits.
short : 16 bits.
long : 32 bits.
long long : 64 bits.


D:\C++CodeProject\Project1\x64\Debug\Project1.exe (进程 69212)已退出,代码为 0。
按任意键关闭此窗口. . .

三、细节问题

3.1 查看每个整型的位数

要查看每个整型的位数,可以使用头文件中的numeric_limits模板类。该类提供了关于各种整型的信息,包括位数。

#include
#include
#include
int main() {
	using namespace std;
	
	cout << "int is " << CHAR_BIT * sizeof(int) << " bits." << endl;
	cout << "short is " << CHAR_BIT * sizeof(short) << " bits." << endl;
	cout << "long is " << CHAR_BIT * sizeof(long) << " bits." << endl;
	cout << "long long is " << CHAR_BIT * sizeof(long long) << " bits." << endl;

	return 0;
}

运行该程序,将输出每个整型的位数(以比特为单位)。CHAR_BIT是头文件中定义的常量,表示每个字节中的位数。

请注意,上述代码假设一个字节包含8位。这是大多数平台上的常见情况,但也有一些特殊的平台可能使用不同的位数来表示一个字节。

3.2 sizeof 函数

sizeof是一个C++运算符,用于获取数据类型或变量的大小(以字节为单位)。它的语法如下:

sizeof (type)
sizeof (expression)

其中,type可以是任何有效的数据类型,而expression可以是一个变量、一个数据类型或一个表达式。

sizeof运算符返回一个size_t类型的值,表示其操作数所占用的内存大小。需要注意的是,sizeof的结果是在编译时确定的,它并不会对运行时的表达式进行求值。

以下是一些示例用法:

sizeof(int) // 获取int类型的大小
sizeof(float) // 获取float类型的大小

int num;
sizeof(num) // 获取变量num的大小

sizeof(char) // 获取char类型的大小
sizeof('a') // 获取字符字面量'a'的大小

sizeof(int*) // 获取指针类型的大小
sizeof(num + 5) // 获取表达式num + 5的大小

需要注意的是,sizeof返回的大小是以字节为单位的,不同的数据类型可能在不同的系统和编译器上有不同的大小。可以使用头文件中的std::size_t类型来声明sizeof的结果。

使用sizeof运算符可以帮助程序员了解数据类型和变量所占用的内存大小,在内存管理和优化方面提供有用的信息。

3.3 limits 头文件

头文件中定义了C++标准库中有关数值类型极限的常量和函数。这些常量和函数使得程序能够在编译时获得不同数值类型的范围、精度和其他特性的信息。下面是一些常用的头文件中定义的常量和函数:

数值类型极限常量:

  • std::numeric_limits::min():返回类型T的最小可表示值。
  • std::numeric_limits::max():返回类型T的最大可表示值。
  • std::numeric_limits::lowest():返回类型T的最小有符号可表示值(对于无符号类型,与min()相同)。
  • std::numeric_limits::epsilon():返回类型T的最小精度,即能够表示的最小非零值与1之间的差值。
  • std::numeric_limits::digits:返回类型T的位数(二进制表示下的位数)。
  • std::numeric_limits::digits10:返回类型T的十进制有效数字位数。

特殊值常量:

  • std::numeric_limits::quiet_NaN():返回类型T的静默NaN(Not-a-Number)值。
  • std::numeric_limits::signaling_NaN():返回类型T的信号NaN(Not-a-Number)值。
  • std::numeric_limits::infinity():返回类型T的正无穷大值。

数值属性常量:

  • std::numeric_limits::is_signed:表示类型T是否为有符号类型的布尔常量。
  • std::numeric_limits::is_integer:表示类型T是否为整数类型的布尔常量。
  • std::numeric_limits::is_exact:表示类型T是否为精确表示的布尔常量(例如,整数类型是精确表示的,而浮点类型通常不是)。

其他常量和函数:

  • std::numeric_limits::min_exponent:返回类型T的最小指数。
  • std::numeric_limits::max_exponent:返回类型T的最大指数。
  • std::numeric_limits::has_infinity:表示类型T是否具有表示正无穷大的常量。
  • std::numeric_limits::round_style:表示类型T的舍入方式。

这些常量和函数使得程序员可以在编译时获取不同数值类型的相关信息,包括取值范围、精度、特殊值以及数值属性等。这些信息对于确保正确处理数值、进行数值计算以及编写可移植的代码非常有用。

你可能感兴趣的:(C/C++学习笔记,c++,学习,整型)