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

news/2025/2/23 1:08:50/

文章目录

  • 一、理论
    • 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<iostream>
#include<climits>
#include<limits>
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 : 9223372036854775807int : 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<iostream>
#include<climits>
#include<limits>
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的舍入方式。

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


http://www.ppmy.cn/news/82665.html

相关文章

自动驾驶行业迎来大规模发展,“高精度定位”重要性凸显

5月16日&#xff0c;2023 中国 (亦庄) 智能网联汽车科技周暨第十届国际智能网联汽车技术年会在北京隆重召开。工信部装备工业一司一级巡视员苗长兴在在会上表示&#xff1a;2022 年我国搭载辅助自动驾驶系统的智能网联乘用车新车销售量达 700 万辆&#xff0c;同比增长45.6%&am…

Kubernetes1.22.0 部署 metricis-service

概述 Install cfssl cat > proxy-client-csr.json<<EOF {"CN": "aggregator","hosts": [],"key": {"algo": "rsa","size": 2048},"names": [{"C": "CN",&quo…

nodejs+vue+elementui大学生多媒体学习系统

前端技术&#xff1a;nodejsvueelementui 前端&#xff1a;HTML5,CSS3、JavaScript、VUE(1)课程学习(包括课程分类 课程目录 课程学习等相关操作&#xff09; (2)课程评价 (3)课程统计 (4)相关信息管理(包括基本信息 课程编辑 注册登录等相关操作) 1、 node_modules文件夹(有np…

Baklib分享:做好企业内部知识管理的方法?

企业内部知识管理是一个重要的任务&#xff0c;它涵盖了许多领域&#xff0c;包括知识生成、知识共享、知识保护等。在现代企业中&#xff0c;知识管理被认为是一项战略性的任务&#xff0c;可以为企业带来许多好处&#xff0c;例如提高员工生产力、减少错误和失误、加强员工的…

java原生LinkedList详解

java原生LinkedList详解 实际上在IDEA,JDK环境下的LinkList底层就是一个双向链表&#xff0c;由于链表没有将元素存储在连续的空间中&#xff0c;元素存储在单独的节点中&#xff0c;然后通过引用将节点连接起来了&#xff0c;因此在在任意位置插入或者删除元素时&#xff0c;…

vue不同开发方式引用vue文件讲解

上面这个图是vue构建后dist目录的文件&#xff0c;这里面包含了各种开发环境所需要的vue文件 一、开发环境和生产环境 主要分为带有prod和不带prod的版本&#xff1b; 带有prod为生产环境版本并进行了代码压缩&#xff0c;没有运行中不会有警告、错误等详细的提示信息 不带pr…

腾讯云图形验证码申请流程

目录 一、官方指引二、操作步骤1.步骤1&#xff1a;新建验证&#xff0c;获取验证码密钥2.步骤2&#xff1a;客户端接入验证码&#xff0c;展示验证页面3.步骤3&#xff1a;服务端接入验证码&#xff0c;调用票据校验 API 进行二次校验 一、官方指引 https://cloud.tencent.co…

NSS周常刷密码(1)

感觉没怎么做密码,就每周上nss随便做点 稍微难点的会分析 [SWPU 2020]happy import gmpy2 from Crypto.Util.number import * import z3c 0x7a7e031f14f6b6c3292d11a41161d2491ce8bcdc67ef1baa9e e 0x872a335 #q q*p^3 128536731745208998078944182958039785532190189…