C++ 与基本数据类型:整型、布尔型与字符型

文章目录

  • 参考
  • 描述
  • 数据类型
      • 基本数据类型与复合数据类型
      • 静态数据类型
  • 整形数据类型
      • 有符号整型数据类型
      • 无符号整型数据类型
      • 符号位
  • 最少内存空间
      • 概念
      • 确定大小
          • sizeof 运算符
  • 进制
      • C++ 中的不同进制数值表示
      • cout 与进制转化
          • 影响范围
          • 二进制
  • 后缀
      • 字面量
      • 整型字面量的默认数据类型
      • 主动权
      • 整型数据类型 short
  • 溢出
  • 布尔型数据类型
      • 概念
      • true 与 false
      • 过程判断
  • 字符型数据类型
      • 概念
      • ASCII 编码
      • 存储的是字符还是数值?
      • 数值而不是字符
      • signed char 与 unsigned char
      • 空字符型字面量

参考

项目描述
搜索引擎BingGoogle
AI 大模型文心一言通义千问讯飞星火认知大模型ChatGPT
菜鸟教程数据类型
C++ Primer Plus (第六版)中文版史蒂芬·普拉达 / 张海龙,袁国忠 译
精通C++(第九版)ISBN:9787302503163
黑马程序员C++
CPlusPlusReference

描述

项目描述
操作系统Windows 10 专业版
编辑器VSCode
编译器g++.exe (x86_64-win32-seh-rev1, Built by MinGW-Builds project) 13.1.0

数据类型

数据类型用于确定变量存储的 数据所占用的内存空间大小和支持的操作。数据类型分为基本数据类型和复合数据类型两大类。

基本数据类型与复合数据类型

基本数据类型

基本数据类型是编程语言中的原始数据类型,通常由编程语言提供,用于存储 单一的简单的 数据值。

复合数据类型

复合数据类型用于 组合多个基本数据类型或其他复合数据类型,以创建更为复杂的数据结构。复合数据类型使程序能够组织和操作多个不同的数据元素。

静态数据类型

数据类型在 C++ 中是 静态类型,这意味着 在变量声明时必须指定其数据类型,编译器在编译时会检查 类型一致性,从而提高了代码的稳定性和安全性。选择适当的数据类型对于编写 高效、可读性强 的代码非常重要,因为它会影响变量的内存空间占用、运行速度以及程序的正确性。

整形数据类型

C++ 中的整型数据类型用于存储整数值,这些值可以是 正数负数。整型数据类型可以分为 两大类,即有符号整型数据类型与无符号整型数据类型。

有符号整型数据类型

有符号整型数据类型能够用于存储 正数负数。如果您需要存储的整型数据需要使用到 负数,那么请使用有符号整型数据类型。

项目大小范围数量级
short、signed short、short int 、signed short int两个字节-32,728 ~ 32,727
int、signed四个字节-2,147,483,648 ~ 2,147,483,647十亿
long、signed long、long int、signed long intWindows 占用四个字节;Linux32 位 系统占用四个字节,64 位 系统占用八个字节-2,147,483,648 ~ 2,147,483,647十亿
long long、signed long long、long long int、singned long long int八个字节-9,223,372,036,854,775,808 ~ 9,223,372,036,854,775,807百亿亿

注:

有符号整型数据类型中的各个 子类型 均存在 多个名称,您可以使用某一子类型中的某一名称来表示该子类型。

无符号整型数据类型

无符号整型数据类型用于存储 正数。如果您需要存储的整型数据不需要使用到 负数,那么请您使用无符号整型数据类型。

项目大小范围数量级
unsigned short、unsigned short int两个字节0 ~ 65,535
unsigned、unsigned int四个字节0 ~ 4,294,967,295十亿
unsigned long、unsigned long intWindows 占用四个字节;Linux32 位 系统占用四个字节,64 位 系统占用八个字节0 ~ 4,294,967,295十亿
unsigned long long、unsigned long long int八个字节0 ~ 18,446,744,073,709,551,615千亿亿

符号位

有符号整型数据类型 需要使用一个二进制位作为符号位符号位用于 表示该整型数值是负数还是非负数。无符号整型数据类型仅用于表示 非负数,故不需要使用到符号位。因此,同样位数的无符号整数具有 更大的正数表示范围,但它不能用于表示负数。

最少内存空间

概念

在不同的 C++ 实现中,不同的数据类型所占用的内存空间是不同的,这可能会导致混乱。C++ 提供了一种灵活的标准,该标准确保了不同数据类型所占用的最小内存空间:

  1. short 数据类型所占据的内存空间至少为 两个字节
  2. int 至少与 short 数据类型所占据的内存空间相同。
  3. long 数据类型所占据的内存空间至少为 四个字节,且至少与 int 数据类型所占据的内存空间相同。
  4. long long 数据类型至少为 八个字节,且至少与 long 数据类型所占据的内存空间相同。

确定大小

不同数据类型所占用内存空间的实际大小可能会因不同的系统和编译器而异。如果您需要计算在您所使用的环境中,各数据类型实际占用的内存空间大小是多少?那么您可以考虑考虑 sizeof 运算符。

sizeof 运算符

sizeof 运算符是C++中用于 确定变量或数据类型占用的内存空间大小 的运算符 (以字节为单位,一字节包含八个二进制位)。你可以通过编写简单的代码来确定在你的系统上各种数据类型所占用的空间大小。对此,请参考如下示例:

// 导入 C++ 头文件 iostream 以实现对流的处理
#include <iostream>
// 使用标准命名空间
using namespace std;int main () {cout << "Short Int\t" << sizeof(short) << endl;cout << "Int\t\t" << sizeof(int) << endl;cout << "Long Int\t" << sizeof(long) << endl;cout << "Long Long Int\t" << sizeof(long long) << endl;// 确保程序执行完毕后不会退出system("pause");return 0;
}

执行结果

Short Int       2
Int             4
Long Int        4
Long Long Int   8
请按任意键继续. . .

注:

sizeof 是 C++ 中提供的运算符,用 括号将操作数包裹的操作并不是必须的。但在 sizeof 运算符的操作对象为 数据类型 时,则必须将其进行包裹。否则,C++ 将抛出异常。

进制

C++ 中的不同进制数值表示

C++ 允许您使用四种种方式来表示整数。具体如下:

  1. 若数值以 0 为前缀 ,则该整数将被视为 八进制 数值。
  2. 若数值以 0X0x 为前缀,则该整数将被视为 十六进制 数值。
  3. 若数值以 0B0b 为前缀,则该整数将被视为 二进制 数值。
  4. 除上述情况外的其他整数都将被视为十进制数值。

举个栗子

#include <iostream>
using namespace std;int main () {//  十进制数值cout << 66 << endl;// 十六进制数值cout << 0X66 << endl;cout << 0X2F << endl;// 八进制数值 cout << 066 << endl;// 二进制数值cout << 0b1001 << endl;system("pause");return 0;
}

执行结果

66
102
47
54
9
请按任意键继续. . .

注:

  1. 在八进制数值中,数值的每一位仅允许是 0 ~ 7 范围中的数值。例如 0982 就是一个错误的八进制数值。
  2. 在十六进制数值中,数值的每一位仅允许是 0 ~ 9a ~ fA ~ F 范围中的数值。例如,0X89D 就是一个错误的十六进制数值。
  3. 在十进制中,数值的每一位仅允许是 0 ~ 9 范围中的数值。例如,10a 就是一个错误的十进制数值。

cout 与进制转化

在使用 cout 将数值输出至终端中时,其他进制的数值都将被转化为十进制数值后输出。
如果您希望 cout 将数值转换为指定进制的数值后在执行窗口中输出,那么你可以使用 hexdecoct 关键字用以将数值分别转换为十六进制、十进制及八进制数值后在执行窗口中输出。

举个栗子

#include <iostream>
using namespace std;int main () {// 将十进制数值转化为十六进制后输出至终端中cout << hex << 36 << endl;// 将十进制数值转化为八进制数值后输出至终端中cout << oct << 36 << endl;// 将十进制数值原样输出cout << dec << 36 << endl;system("pause");return 0;
}

执行效果

24
44
36
请按任意键继续. . .
影响范围

C++ 提供 octhex 关键字来将十进制数值转化为指定进制数值后进行输出我们都能够理解,可为什么还需要提供 dec 关键字来将十进制数值以十进制格式进行输出呢?这不是 cout 的默认行为吗?
原来,在 cout 语句中使用 decocthex 关键字后,后续的 cout 语句都将被影响,而使用 dec 关键字则能够使得 cout 恢复默认行为。对此,请参考如下示例:

#include <iostream>
using namespace std;int main () {// 在下述 cout 语句中,实际发挥作用的是 hex 而不是 oct 关键字。// 因此,后续 cout 语句都将被 hex 关键字影响。cout << oct << hex << 15 << endl;cout << 15 << endl;// 通过 dec 关键字恢复 cout 的默认行为cout << dec;cout << 15 << endl;system("pause");return 0;
}

执行效果

f
f
15
请按任意键继续. . .
二进制

C++ 标准库没有直接提供用于 cout 的二进制输出控制符,但您可以编写一个函数或使用其他方法将整数转换为二进制字符串,然后通过 cout 进行输出。

后缀

字面量

字面量是在程序中 直接使用的数据值,而 不需要任何计算或存储操作。字面量可以是整数、浮点数、字符、字符串或其他数据类型的常数值。

42 // 整数字面量
3.14 // 浮点数字面量
'A' // 字符字面量
"Hello, World!" // 字符串

整型字面量的默认数据类型

C++ 中,并不是只有变量有其数据类型,字面量也是有其所属的数据类型的。整型字面量使用的默认数据类型为 signed int,我们可以通过如下代码进行验证。

#include <iostream>
using namespace std;int main(){cout << sizeof 12 << endl;// usigned int 类型所能够表示的最大数值为 4,294,967,295cout << sizeof 4294967295 << endl;system("pause");
}

执行结果

sizeof 运算符的结果为 4 表明操作数所属的数据类型为 signed intunsigned int,那么究竟哪个才是 C++ 默认使用的数据类型呢?
为此,我们将 sizeof 的操作数设置为 4294967295,这个数值是无符号 int 类型所能够表示的最大数值。sizeof 4294967295 的输出结果为 8,则表明该整型字面量使用的不是 int 数据类型。故准确来说,整型字面量数据默认使用的数据类型是 signed int

4
8
请按任意键继续. . .

注:

在字面量数值的大小超出了 int 所能表示的范围时,C++ 将从其它整型数据类型中选择 尽可能小(C++ 并不因此为整型字面量使用无符号数据类型)且合适 的数据类型作为该整型字面量的数据类型。

主动权

除了让 C++ 为整型字面量分配合适的数据类型外,我们也可以 通过在字面量中添加后缀来指定该字面量使用的数据类型。C++ 支持的整型数据类型的后缀有:

项目后缀
longlL
unsigned longulul 的顺序可以发生变换且两者的大小写形式不被限制)
long longllLL
unsigned long longullUlluLLULL
无符号整型数据类型uU

举个栗子

#include <iostream>
using namespace std;int main() {// 4294967295 是 unsigned int 所能够表示的最大数值cout << sizeof 4294967295U << endl;// 4294967296U 由于超出了 unsigned int // 所能够表示的最大数值,故使用 usigned long longcout << sizeof 4294967296U << endl;// 在不添加 u 或 U 后缀时,C++ 默认为这些// 字面量使用有符号整型数据类型。cout << sizeof 4294967295 << endl;system("pause");return 0;
}

执行效果

4
8
8
请按任意键继续. . .

整型数据类型 short

在 C++ 中,即使整型字面量的取值范围在 short 类型所支持的范围之内,该字面量也将使用 signed int 而不是 signed short 作为该字面量的数据类型。并且,C++ 中也没有为整型数据类型 short 提供相应的后缀。但我们可以通过 static_cast 进行不同数据类型之间的转化。对此,请参考如下示例:

#include <iostream>
using namespace std;int main() {cout << sizeof 1 << endl;// 通过 static_cast 将字面量的数据类型转化为 shortcout << sizeof static_cast<short>(1) << endl;system("pause");return 0;
}

执行效果

4
2
请按任意键继续. . .

溢出

在某一数据类型的数据 超出了该数据类型所支持的范围时,变量值将 跳转到范围的另一端并在此基础上继续计算。对于整型数据类型而言,可能发生如下情况:

  1. 有符号整型溢出
    int 类型举例。当 int 类型的整型数值 增加到其上限并继续增加时,它可能会变为 该类型所支持的最小值并以此为基础继续进行计数。当 int 类型的整型数值 减少到其下限并继续减少时,它可能会变为 该类型所支持的最大值并以此为基础继续进行计数

  2. 无符号整型溢出
    当无符号整型数值增加到其所属的数据类型所支持的上限并继续增加时,它会 回绕到数值 0,并 以此为基础继续进行计数。当其值减少到 0 并继续减少时,它会回绕到该类型的最大值。

举个栗子

#include <iostream>
using namespace std;int main() {// signed short 数据类型所支持的最大值short span_max = 32767;// unsigned short 数据类型所支持的最小值short span_min = -32768; span_max += 7;span_min -= 10;cout << span_max << endl;cout << span_min << endl;system("pause");return 0;
}

执行结果

-32762
32758
请按任意键继续. . .

布尔型数据类型

概念

ANSI/ISO C++ 标准开始支持 布尔类型布尔 这个名称来源于英国数学家 George Boole ,是他开发了逻辑率的数学表示法。在计算中,布尔变量的值可以是 truefalse ,分别代表了

拓展

  1. C99 之前,C语言 的标准没有提供布尔类型,但是这不意味着 C 语言不能表示布尔值的概念。C 中的所有 布尔运算符(&&、|| 等) 以及条件语句(if、While 等)都以非零值代表真,零值代表假。
  2. C++ 支持布尔类型前C++C 一般,将 0 解释为 false,将 非 0 值 解释为 true。但在 C++ 支持布尔类型后,你也仍可以使用 0 来代替 false 或是使用 非 0 值 来代替 true 在条件语句发挥作用。

true 与 false

在 C++ 中,关键字 truefalse 分别可以看作是存储了 10 的变量。

举个栗子

#include <iostream>
using namespace std;int main() {cout << true << endl;cout << false << endl;system("pause");return 0;
}

执行结果

1
0
请按任意键继续. . .

过程判断

布尔类型通常作为 判断一个表达式是否正确的结果,若表达式正确则布尔运算的结果为 true ,若表达式错误则布尔运算的结果为 false

举个栗子

#include <iostream>
using namespace std;int main() {bool result = 3 < 1;// 括号用于提升表达式的优先级,// 防止 C++ 被迷惑导致异常产生。cout << (3 > 1) << endl;cout << result << endl;system("pause");return 0;
}

执行结果

1
0
请按任意键继续. . .

字符型数据类型

概念

C++ 中,字符型变量用于存储字符。您可以使用 char 关键字声明一个字符型变量,使用 char 关键字创建的变量将占用一个字节的内存空间。

注:

  1. 字符需要使用单引号包裹,若使用双引号,C++ 将抛出错误。
  2. 字符型变量仅能包含单个字符,但转移字符除外,因为一个转义字符需要使用两个字符来进行表示。例如:\n\t

ASCII 编码

ASCII(American Standard Code for Information Interchange) 是一种字符编码标准,用于 将文本字符映射到数值ASCII 最早🤞在计算机领域中广泛使用,它定义了 128 个不同的字符,包括 控制字符(如换行和回车) 以及 可打印字符(如字母、数字、标点符号等)。ASCII 定义的每个字符都被分配了一个 唯一的整数值,范围从 0127

注:

世界上存在许多的编码方案,但这些方案大多是 基于 ASCII 编码进行扩展的🌹,因此 ASCII 编码也被认为是 字符编码的基础

存储的是字符还是数值?

C++ 中,使用 char 类型的变量存储某一字符时,存储的不是字符本身而是该字符对应的 ASCII 编码值。我们可以通过如下代码对此进行验证:

#include <iostream>
using namespace std;int main() {char letter = 'a';cout << letter << endl;cout << letter + 1 << endl;system("pause");return 0;
}

执行效果

a
98
请按任意键继续. . .

上述示例的执行结果表明了如下两点事实:

  1. 存储在 letter 字符类型的变量中的数据 能够与数值进行运算
  2. 通过 cout 将字符类型的变量所存储的值输出至终端中显示的 的确是字符而不是数值

对于上述两点事实分别作出如下两点解释:

  1. 字符类型的变量中存储的实际是数值而不是字符。
  2. cout 在将字符类型的变量所存储的值 输出至终端前 会将变量值转化为 该值所对应的 ASCII 字符

数值而不是字符

除了传递字符给 char 变量外,你还可以 直接将需要保存的字符对应的 ASCII 码传递给该变量作为该变量的值。例如:

#include <iostream>
using namespace std;int main() {char letter = 97;cout << letter << endl;system("pause");return 0;
}

执行结果

a
请按任意键继续. . .

signed char 与 unsigned char

char 在默认情况下是否为有符号数据类型由 C++ 实现来决定,这样编译器的开发人员将能够最大限度地将这种类型与硬件属性匹配起来。你可以使用 signed charunsigned char 来显式指定 char 为哪一种类型。
如果将 char 用作数值类型,则 unsigned charsigned char 之间的差异将变得非常重要。unsigned char 类型所支持的范围为 0 ~ 255 ,而 signed char 类型所支持的范围为 -128 ~ 127

举个栗子

#include <iostream>
using namespace std;int main() {unsigned char letter = 130;cout << letter << endl;cout << "--------------------" << endl;cout << (int)letter << endl;system("pause");return 0;
}

执行效果

为了使 cout 语句 直接输出字符类型变量所存储的具体数值,在上述示例中我们通过使用 (int) 将字符类型的数据转化为整型数据类型。


--------------------
130
请按任意键继续. . .

请尽可能使用 unsigned charsigned char 来显式指定 char 的类型,否则您无法判断运行程序后是否会出现如下状况:

#include <iostream>
using namespace std;int main() {char letter = 130;cout << letter << endl;cout << "--------------------" << endl;cout << (int)letter << endl;system("pause");return 0;
}

执行结果


--------------------
-126
请按任意键继续. . .

空字符型字面量

C++ 不允许使用空字符型字面量。在需要字符型字面量时,确保使用 单引号包裹一个字符 以避免编译时错误。对此,请参考如下示例:

#include <iostream>
using namespace std;int main() {// 尝试向终端输出空字符型字面量cout << '' << endl;system("pause");return 0;
}

执行效果

C++ 编译器抛出异常信息 empty character constant

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/100625.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

代码随想录算法训练营第六十天 | 单调栈 part 1 | 739. 每日温度、496.下一个更大元素 I

目录 739. 每日温度思路代码 496.下一个更大元素 I思路代码 739. 每日温度 Leetcode 思路 维持一个单调递增的栈&#xff0c;向栈逐一pushtemperatures里的index。 如果当前遍历的元素大于栈顶元素&#xff0c;这意味着 栈顶元素的 右边的最大的元素就是 当前遍历的元素&…

【网络安全】网络安全的最后一道防线——“密码”

网络安全的最后一道防线——“密码” 前言超星学习通泄露1.7亿条信息事件武汉市地震监测中心遭境外网络攻击事件 一、密码起源1、 古代密码2、近代密码3、现代密码4、量子密码 二、商密专栏推荐三、如何利用密码保护账号安全&#xff1f;1、账号安全的三大危险&#xff1f;&…

修炼k8s+flink+hdfs+dlink(四:k8s(一)概念)

一&#xff1a;概念 1. 概述 1.1 kubernetes对象. k8s对象包含俩个嵌套对象字段。 spec&#xff08;规约&#xff09;&#xff1a;期望状态 status&#xff08;状态&#xff09;&#xff1a;当前状态 当创建对象的时候&#xff0c;会按照spec的状态进行创建&#xff0c;如果…

将网站域名访问从http升级到https(腾讯云/阿里云)

文章目录 1.前提说明2.服务器安装 docker 与 nginx2.1 安装 docker&#x1f340; 基于 centos 的安装&#x1f340; 基于ubuntu 2.2 配置阿里云国内加速器&#x1f340; 找到相应页面&#x1f340; 创建 docker 目录&#x1f340; 创建 daemon.json 文件&#x1f340; 重新加载…

小程序如何设置各种时间参数

在小程序管理员后台->基本设置处&#xff0c;可以设置各种时间。例如待支付提醒时间、待支付取消时间、自动发货时间、自动收货时间、自动评价时间等等。下面具体解释一下各个时间的意思。 1. 待支付提醒时间&#xff1a;在用户下单后&#xff0c;如果一段时间内没有完成支付…

Ajax跨域访问,访问成功但一直走error不走success的的问题解决

Ajax跨域访问,访问成功但一直走error不走success的的问题解决 通过搜索各种资料&#xff0c;终于解决啦&#xff0c;废话不多说了&#xff0c;还是老规矩直接上代码&#xff1a; 我这里用了jsonp&#xff0c;有想了解的点击 : jsonp 前端代码&#xff1a; $.ajax({type:post…

03黑马店评-添加商户缓存和商户类型的缓存到Redis

商户查询缓存 什么是缓存 实际开发过程中数据量可以达到几千万,缓存可以作为避震器防止过高的数据访问猛冲系统,避免系统内的操作线程无法及时处理信息而瘫痪 缓存(Cache)就是数据交换的缓冲区(储存临时数据的地方),我们俗称的"缓存"实际就是缓冲区内的数据(一般从…

Docker与Serverless计算的集成: Docker容器如何与Serverless计算结合。

文章目录 1. Docker容器的可移植性2. Serverless计算的自动伸缩性3. 使用Serverless与Docker容器a. 自托管Serverless平台b. 使用容器服务 4. 使用案例&#xff1a;图像处理服务5. 结论 &#x1f388;个人主页&#xff1a;程序员 小侯 &#x1f390;CSDN新晋作者 &#x1f389;…

【常用页面记录】vue+elementUI实现搜索框+上拉加载列表

一、代码 <template><div class"mainBox"><div class"headbox"><el-input placeholder"请输入文件名称搜索" prefix-icon"el-icon-search" v-model"fileName" :clearable"true" change&qu…

【Linux服务端搭建及使用】

连接服务器的软件&#xff1a;mobaxterm 设置root 账号 sudo apt-get install passwd #安装passwd 设置方法 sudo passwd #设置root密码 su root #切换到root账户设置共享文件夹 一、强制删除原有环境 1.删除python rpm -qa|grep pytho…

获取西华大学新闻网站信息(爬虫样例)

利用python的爬虫功能进行信息爬取&#xff0c;关键在于源码分析&#xff0c;代码相对简单。 1 源代码分析 访问网站&#xff0c;按下F12&#xff0c;进行元素查找分析。 2 代码实现 from requests import get from bs4 import BeautifulSoupdef getXhuNews(pageNum1):&qu…

【每日一记】OSPF区域划分详讲、划分区域的优点好处

个人名片&#xff1a; &#x1f43c;作者简介&#xff1a;一名大二在校生&#xff0c;喜欢编程&#x1f38b; &#x1f43b;‍❄️个人主页&#x1f947;&#xff1a;小新爱学习. &#x1f43c;个人WeChat&#xff1a;hmmwx53 &#x1f54a;️系列专栏&#xff1a;&#x1f5bc…

家政服务行业做开发微信小程序可以实现什么功能

家政服务行业开发微信小程序可以实现多种功能&#xff0c;从而提升服务品质和效率&#xff0c;下面我们来详细介绍一些可能实现的功能。 一、展示服务信息 家政服务微信小程序可以展示各种服务信息&#xff0c;包括各类家政服务项目、价格、服务流程、服务人员信息等。用户可以…

岛屿的数量

题目描述 给你一个由 ‘1’&#xff08;陆地&#xff09;和 ‘0’&#xff08;水&#xff09;组成的的二维网格&#xff0c;请你计算网格中岛屿的数量。 岛屿总是被水包围&#xff0c;并且每座岛屿只能由水平方向和/或竖直方向上相邻的陆地连接形成。 此外&#xff0c;你可以…

通过后台系统添加一段div,在div中写一个<style></style>标签来修改div外面的元素的深层元素的样式

先看图 btn元素就是通过后台系统加上的元素,现在需要通过在btn里面写一个style标签来修改grid-nine里面的head元素的高度.开始想通过style来修改,但是不知道怎么去获取这个div外面的元素,想通过js方法去修改,写了script标签加了js代码,但不生效,后面问了才知道,这个项目是vue打…

MES系统安灯管理:实时可视化生产线状态

一、MES系统安灯管理的意义&#xff1a; 安灯管理是指通过使用不同颜色的灯光信号来表示生产线的状态&#xff0c;以便生产人员能够直观地了解生产线的运行情况。MES系统安灯管理的意义在于提供一个实时可视化的工具&#xff0c;使制造企业能够及时发现生产线异常和潜在问题&a…

light client轻节点简介

1. 引言 前序博客&#xff1a; Helios——a16z crypto构建的去中心化以太坊轻节点 去中心化和自我主权对于Web3的未来至关重要&#xff0c;但是这些理想并不总适用于每个项目或应用程序。在非托管钱包和bridges等工具中严格优先考虑安全性而不是便利性的用户&#xff0c;可选…

设计模式 - 结构型模式考点篇:适配器模式(类适配器、对象适配器、接口适配器)

目录 一、适配器模式 一句话概括结构式模式 1.1、适配器模式概述 1.2、案例 1.2.1、类适配器模式实现案例 1.2.2、对象适配器 1.2.3、接口适配器 1.3、优缺点&#xff08;对象适配器模式&#xff09; 1.4、应用场景 一、适配器模式 一句话概括结构式模式 教你将类和对…

阿里云上了新闻联播

我是卢松松&#xff0c;点点上面的头像&#xff0c;欢迎关注我哦&#xff01; 阿里新任的CEO吴泳铭上央视新闻联播了! 在昨天的新闻联播里&#xff0c;出席科技座谈会&#xff0c;有一个特别镜头&#xff0c;出现了阿里新任CEO吴泳铭的镜头。 这个信号意义明显&#xff0c;我…