3.3 整型

本节必须掌握的知识点:

整型数据类型的取值范围

示例八

代码分析

汇编解析

获取数据类型的取值范围

     

3.3.1 整型数据类型取值范围

整型是用来表示限定范围内连续整数的数据类型。表3-1列出了C语言编译器定义的整型数据类型及其大小和取值范围。

类型

存储大小

值范围

整型           int

24字节

-32768 ~32767】或

-2147483648~2147483647

短整型        short int

2字节

-32768  32767

长整型        long int

4字节

-2147483648~2147483647

无符号整型 unsigned int

24字节

0 ~65535 或【 0 ~4294967295

无符号短整型 unsigned short int

2字节

0 ~65535

无符号长整型 unsigned long int

4字节

 0 ~4294967295

表3-1整型数据类型

【注:各种数据类型的存储大小与操作系统位数有关,如下表3-2、3-3、3-4所示,分别列出了16位、32位、64位操作系统中基本类型存储的字节大小】

16位操作系统】

类型

存储大小

值范围

整型           int

2字节

-32768 ~32767

短整型        short int

2字节

-32768  32767

长整型        long int

4字节

-2147483648~2147483647

无符号整型 unsigned int

2

0 ~65535

无符号短整型 unsigned short int

2字节

0 ~65535

无符号长整型 unsigned long int

4字节

 0 ~4294967295

                  

                                表3-2 16位操作系统整型数据类型

32位操作系统】

类型

存储大小

值范围

整型           int

4字节

-2147483648~2147483647

短整型        short int

2字节

-32768  32767

长整型        long int

4字节

-2147483648~2147483647

无符号整型 unsigned int

4字节

 0 ~4294967295

无符号短整型 unsigned short int

2字节

0 ~65535

无符号长整型 unsigned long int

4字节

 0 ~4294967295

表3-3 32位操作系统整型数据类型

64位操作系统

类型

存储大小

值范围

整型           int

4字节

-2147483648~2147483647

短整型        short int

2字节

-32768  32767

长整型        long int

8字节

-9223372036854775808~

9223372036854775807

long long

8字节

-9223372036854775808~

9223372036854775807

_int64

8字节

-9223372036854775808~

9223372036854775807

无符号整型 unsigned int

4字节

 0 ~ 4294967295

无符号短整型 unsigned short int

2字节

0 ~ 65535

无符号长整型 unsigned long int

8字节

 0 ~ 18446744073709551615

unsigned long long

8字节

0 ~ 18446744073709551615

unsigned __int64

8字节

0 ~ 18446744073709551615

                                 

                                表3-4 64位操作系统整型数据类型

接下来以代码+解释说明的形式详细讲述怎样使用这些数据类型,怎样检测数据类型,以及怎么判断它的取值范围。

我们以32位操作系统下的整型数据类型为例。

【整型】

“整型”从字面理解是整数类型的意思,整数类型只能存储整数,不能存储小数。整型按照存储空间的大小可以分为short类型、int类型、long类型和long long类型。如果存储的数据超出该数据类型的存储空间,则会溢出,造成数据丢失。或者编译时以错误提示的形式告知。C语言编译器在编译时会对数据类型做严格的检查,帮助程序员减少错误的发生。

如果按取值范围来划分,我们又可以把整型分为有符号整型和无符号整型。在C语言中,无符号类型表示非负整数,即大于或等于0的数;有符号类型既可以是正数也可以是负数,也可以是0,但只能是整数。

实验二十三:超出数据类型存储空间

以示例七为例,控制台窗口输入一个超出范围的整数值,如下所示:

请输入一个整型:

11111111111111111111111111111111111111111111111111111111111111111111

用户输入的内容是-1。

源程序中定义控制台输入的整数值存储在int类型的变量y中。在C语言中,如果有符号整数超出范围,将以其最大值的补码形式存储。如果无符号整数溢出,将丢弃溢出的数据位。假如存储的是一个超大值,编译器将提示错误信息。

还存在另外一种情况,假如是控制台输入一个超大值,不论是有符号整型还是无符号整型,最终存储值均为-1。

仍以示例其为例,将变量y修改为无符号整型:

unsigned int y;     //准备变量

请输入一个整型:

11111111111111111111111111111111111111111111111111111111111111111111

用户输入的内容仍然是-1。

举例

#include <stdio.h>

int main()

{

unsigned int a = 0x100000000;//丢弃最高位1

int b = 0xffffffff;      //int类型最大值0x7fffffff的补码为0x10000001

printf("a=%u, b=%d\n", a, b);

return 0;

}

运行结果:
a=0, b=-1

假设是一个超大值:

unsigned int a = 222222222222222222222222222222222222;

编译时提示:

error C2177: 常量太大

注:计算补码的方法:符号位不变,其余各位取反后加1。

3.3.2 示例八

接下来验证int、short int、long int有符号整型能储存多少字节。

示例代码八

int main(void)

{

int i = 0;

printf("int 存储大小 : %u byte\n"sizeof(i));//无符号整型输出

short int  x = 0;//【可以缩写为 short x = 0;】

printf("short 存储大小 : %u byte\n"sizeof(x));//无符号整型输出

long int y = 0;//【可以缩写为 long y = 0;】

printf("long 存储大小 : %lu byte\n"sizeof(y));//无符号长整型输出

system("pause");

return 0;

}

●输出结果:

int存储大小 : 4 byte

short 存储大小 : 2 byte

long 存储大小 : 4 byte

请按任意键继续. . .

3.3.3 代码分析

示例八输出的结果显示:

在VS编译器中,使用sizeof()运算符取出有符号整型数据长度。int存储空间大小为4字节;short 存储空间大小为2字节;long存储空间大小为4字节。

printf函数输出的格式化说明符’%u’表示无符号整型unsigned int格式,’%lu’表示long unsigned无符号长整数格式。之所以使用无符号整数格式输出,说明使用sizeof()运算符取出的数据类型的长度均为以字节为单位的正整数。

当然在这里使用’%d’有符号整数格式输出也是没有问题的,只要不超出有符号整数的数据范围即可。在很多情况下,程序员处于习惯的原因,使用有符号整数数据类型显示无符号整数,但是建议采用规范的编码格式,避免不必要的错误。

实验二十四:超出数据类型存储空间

将示例八中printf函数的格式化说明符改为’%d’,

printf("int 存储大小 : %d byte\n"sizeof(i));

printf("short 存储大小 : %d byte\n"sizeof(x));

printf("long 存储大小 : %d byte\n"sizeof(y));

按F7编译:

=========生成: 成功 1 个,失败 0 个,最新 0 个,跳过 0 个 ==========

然后输出结果:

int 存储大小 : 4 byte

short 存储大小 : 2 byte

long 存储大小 : 4 byte

请按任意键继续. . .

3.3.4 汇编解析

汇编代码

;C标准库头文件和导入库

include vcIO.inc

.data ;全局区

i sdword 0 ;等价于int类型

x sword 0 ;等价于short int类型

y sdword 0  ;等价于long int类型

.const ;常量区

szMsg1 db "int 存储大小 : %u byte",0dh,0ah,0

szMsg2 db "short 存储大小 : %u byte",0dh,0ah,0

szMsg3 db "long 存储大小 : %lu byte",0dh,0ah,0

.code ;代码区

start:

push sizeof i

push offset szMsg1     

call printf             

;

push sizeof x

push offset szMsg2     

call printf             

;

push sizeof y

push offset szMsg3     

call printf             

;     

invoke _getch

ret                       

end start

●输出结果:

int 存储大小 : 4 byte

short 存储大小 : 2 byte

long 存储大小 : 4 byte

汇编代码中,使用sizeof操作符取出变量的长度。汇编数据类型sdword等价于C语言数据类型int,sword类型等价于short int类型,sdword类型等价于long int类型。

反汇编代码

  int i = 0;

00E81838 mov dword ptr [i],0 

printf("int存储大小 : %u byte\n", sizeof(i));//无符号整型输出

00E8183F push 4 

00E81841 push offset string "int

\xb4\xe6\xb4\xa2\xb4\xf3\xd0\xa1 : %u byte\n" (0E87B30h) 

00E81846 call _printf (0E8104Bh) 

00E8184B add esp,8 

short int  x = 0;//【可以缩写为 short x = 0;】

00E8184E xor eax,eax 

short int  x = 0;//【可以缩写为 short x = 0;】

00E81850 mov word ptr [x],ax 

printf("short存储大小 : %u byte\n", sizeof(x));//无符号整型输出

00E81854 push 2 

00E81856 push offset string "short

\xb4\xe6\xb4\xa2\xb4\xf3\xd0\xa1 : %u byte\n" (0E87B4Ch) 

00E8185B call _printf (0E8104Bh) 

00E81860 add esp,8 

long int y = 0;//【可以缩写为 long y = 0;】

00E81863 mov dword ptr [y],0 

printf("long存储大小 : %lu byte\n", sizeof(y));//无符号长整型输出

00E8186A push 4 

00E8186C push offset string "long

\xb4\xe6\xb4\xa2\xb4\xf3\xd0\xa1 : %lu byte\n" (0E87B6Ch) 

00E81871 call _printf (0E8104Bh) 

00E81876 add esp,8

观察下面的反汇编语句:

  int i = 0;

mov dword ptr [i],0

short int x = 0;//【可以缩写为 short x = 0;】

   mov word ptr [x],ax

long int y = 0;//【可以缩写为 long y = 0;】

   mov dword ptr [y],0

int类型对应汇编dword类型是4字节; short类型对应word类型是2字节;long类型对应dword类型是4字节。

提示

1、在C语言中int字长和机器字长相同;

2、操作系统字长和机器字长未必一致;(比如在64位系统下运行32位程序。)

3、编译器根据操作系统字长来规定int字长的;

在Linux系统上,int的字长与处理器的字长一致;在Windows操作系统上,操作系统的字长与处理器的字长不一定一致,编译器根据系统的字长来定义int的字长。

4.在VS编译器中,默认缺省的数据类型为int类型,默认缺省的浮点类型是double类型。

3.3.5 获取数据类型的取值范围

实验二十五:获取有符号数据类型的取值范围

C标准库<limits.h>头文件中使用宏定义了各种数据类型的取值范围,宏定义可以直接使用,例如CHAR_BIT、INT_MIN、INT_MAX等,具体见附录D。

/*

limits.h 头文件取数据类型取值范围

*/

#include <stdio.h>

#include <stdlib.h>

#include <limits.h>

int main(void)

{

printf("The number of bits in a byte %d\n"CHAR_BIT);//一个字节数据位数

printf("The minimum value of INT = %d\n"INT_MIN); // int 最小值

printf("The maximum value of INT = %d\n"INT_MAX); // int 最大值

printf("The minimum value of SHORT INT = %d\n"SHRT_MIN);// short 最小值

printf("The maximum value of SHORT INT = %d\n"SHRT_MAX);// short 最大值

printf("The minimum value of LONG = %ld\n"LONG_MIN); // long 最小值

printf("The maximum value of LONG = %ld\n"LONG_MAX); // long 最大值

system("pause");

return 0;

}

●输出结果:

The number of bits in a byte 8

The minimum value of INT = -2147483648

The maximum value of INT = 2147483647

The minimum value of SHORT INT = -32768

The maximum value of SHORT INT = 32767

The minimum value of LONG = -2147483648

The maximum value of LONG = 2147483647

请按任意键继续. . .

●查看limits.h头文件

VS中鼠标选中limits.h头文件,点击鼠标右键,选中“打开文档<limits.h>”,显示内容如下:

//

// limits.h

//

// Copyright (c) Microsoft Corporation. All rights reserved.

//

// The C Standard Library <limits.h> header.

//

#pragma once

#define _INC_LIMITS

#include <vcruntime.h>

_CRT_BEGIN_C_HEADER

#define CHAR_BIT 8// number of bits in a char

#define SCHAR_MIN (-128) // minimum signed char value

#define SCHAR_MAX 127 // maximum signed char value

#define UCHAR_MAX 0xff // maximum unsigned char value

#ifndef _CHAR_UNSIGNED

#define CHAR_MIN CHAR_MIN // mimimum char value

#define CHAR_MAX SCHAR_MAX // maximum char value

#else

#define CHAR_MIN 0

#define CHAR_MAX UCHAR_MAX

#endif

#define MB_LEN_MAX // max. # bytes in multibyte char

#define SHRT_MIN (-32768) // minimum (signed) short value

#define SHRT_MAX 32767 // maximum (signed) short value

#define USHRT_MAX 0xffff // maximum unsigned short value

#define INT_MIN (-2147483647 - 1) // minimum (signed) int value

#define INT_MAX 2147483647 // maximum (signed) int value

#define UINT_MAX 0xffffffff // maximum unsigned int value

#define LONG_MIN (-2147483647L - 1) // minimum (signed) long value

#define LONG_MAX 2147483647L // maximum (signed) long value

#define ULONG_MAX 0xffffffffUL // maximum unsigned long value

#define LLONG_MAX 9223372036854775807i64 // maximum signed long long int value

#define LLONG_MIN (-9223372036854775807i64 - 1) // minimum signed long long int value

#define ULLONG_MAX 0xffffffffffffffffui64 // maximum unsigned long long int value

#define _I8_MIN (-127i8 - 1) // minimum signed 8 bit value

#define _I8_MAX 127i8 // maximum signed 8 bit value

#define _UI8_MAX 0xffui8 // maximum unsigned 8 bit value

#define _I16_MIN (-32767i16 - 1) // minimum signed 16 bit value

#define _I16_MAX 32767i16 // maximum signed 16 bit value

#define _UI16_MAX 0xffffui16 // maximum unsigned 16 bit value

#define _I32_MIN (-2147483647i32 - 1) // minimum signed 32 bit value

#define _I32_MAX 2147483647i32 // maximum signed 32 bit value

#define _UI32_MAX 0xffffffffui32 // maximum unsigned 32 bit value

// minimum signed 64 bit value

#define _I64_MIN (-9223372036854775807i64 - 1)

// maximum signed 64 bit value

#define _I64_MAX 9223372036854775807i64

// maximum unsigned 64 bit value

#define _UI64_MAX 0xffffffffffffffffui64

#if _INTEGRAL_MAX_BITS >= 128

// minimum signed 128 bit value

#define _I128_MIN  (-170141183460469231731687303715884105727i128 - 1)

// maximum signed 128 bit value

#define _I128_MAX 170141183460469231731687303715884105727i128

// maximum unsigned 128 bit value

#define _UI128_MAX 0xffffffffffffffffffffffffffffffffui128

#endif

#ifndef SIZE_MAX

#ifdef _WIN64

#define SIZE_MAX _UI64_MAX

#else

 #define SIZE_MAX UINT_MAX

#endif

#endif

#if __STDC_WANT_SECURE_LIB__

#ifndef RSIZE_MAX

#define RSIZE_MAX (SIZE_MAX >> 1)

#endif

#endif

_CRT_END_C_HEADER

实验二十六:获取无符号数据类型的长度

前面介绍了有符号类型,接下来我们按同样的步骤查看无符号整型unsignedint、unsigned short int、unsigned long int能储存多少字节。

/*

输出无符号整型的长度

*/

#include <stdio.h>

#include <stdlib.h>

int main(void)

{

unsigned int i = 0;

unsigned short int  s = 0;//【可以缩写为unsigned short s = 0;】

unsigned long int l = 0;//【可以缩写为 unsigned long l = 0;】

printf("unsigned int 存储大小 : %u byte\n"sizeof(i));

printf("unsigned short int 存储大小 : %u byte\n"sizeof(s));

printf("unsigned long int 存储大小 : %u byte\n"sizeof(l));

system("pause");

return 0;

}

●输出结果:

unsigned int 存储大小 : 4 byte

unsigned short int 存储大小 : 2 byte

unsigned long int 存储大小 : 4 byte

请按任意键继续. . .

结论

unsigned int 存储空间大小为4字节;unsigned short int 存储空间大小为2字节;unsigned long int 存储空间大小为4字节;

unsigned int、unsigned short int、unsigned long int的 范围在这里就不做实验了,希望读者能够自己动手完成【同样使用limits.h库函数】。

【无符号整型和有符号整型的区别】

本节只对32位操作系统下int 和unsigned int做比较。

int:有符号整数,占4个字节,可表示范围【-2147483648~2147483647】。

unsigned int:无符号整数,占4个字节,可表示范围【 0 ~4294967295】。

在C语言中初始化 int i = -1;其实等价与signed int i = -1;关键字signed可以省略。因为C语言默认就是有符号类型的。

为了说明signed和unsigned的区别,首先要搞清楚数据在内存中是如何存储的。

举例

Unsigned int i =1;变量i在内存中是 0000 0000 0000 0000 0000 0000 0000 0001存储的,由于unsigned int 是无符号整型,所以它的32位全部用来存储数据;用图表的形式表示:

int j = -1;由于int是有符号整型,所以就要考虑符号位的问题了。还有一点就是正数是以它自身形式存储的,而负数是以补码的形式存储的,参见《X86汇编基础教程》预备知识,此处不再赘述,直接写出-1原码、反码、补码。

实验二十七:获取无符号数据类型的长度

分别定义int类型变量j和unsigned int类型变量i,并给两个变量赋给相同的值-1,然后分别按照’%u’和’%d’格式输出。

/*

输出无符号整型和有符号整数

*/

#include <stdio.h>

#include <stdlib.h>

int main(void)

{

unsigned int  i = 0;

int j = -1;

i = j;

printf("i = %u\n"i);

printf("j = %d\n"j);

system("pause");

return 0;

}

●输出结果:

i = 4294967295

j = -1

请按任意键继续. . .

控制台窗口中显示的”i = 4294967295“,这个结果怎么来的呢?

因为变量j为int有符号整数类型,值为-1,负整数以补码形式存储在内存中,-1的补码是:

变量i为unsigned int无符号整数类型,存储时编译器将-1转换为补码然后存储到内存中,无符号整数将32位全部看作是数值位,因此按照无符号整数格式输出的0xffffffff的十进制数为4294967295。

unsigned int 类型的取值范围0 ~4294967295,即0~232-1,int 类型的取值范围-231~231-1,-1是最大负整数,如下图所示:

                                         图3-4 32位整数取值范围

​在图3-4中,无符号数均为正数,取值范围是:【0~0xFFFFFFFF】。

有符号数正整数的范围是:【0~0x7FFFFFFF】。

有符号数负整数的范围是:【0x80000000~0xFFFFFFFF】。

接下来我们在内存中观察变量i和变量j的值:

第一步:在VSunsigned int  i = 0;一行F9下断点;

第二步:F5调试执行,在监视窗口1输入’&i’和’&j’,监视窗口显示两个变量的初始值:

名称

类型

&i

0x001ffd7c {0xcccccccc}

unsigned int *

&j

0x001ffd70 {0xcccccccc}

int *

第三步:F10单步执行到ystem("pause");语句,此时监视窗口按照十六进制格式显示内容如下:

名称

类型

&i

0x001ffd7c {0xffffffff}

unsigned int *

&j

0x001ffd70 {0xffffffff}

int *

第四步:监视窗口点击鼠标右键,去掉“十六进制显示”选项,按照默认十进制格式显示内容如下:

名称

类型

已返回 printf

7

int

i

4294967295

unsigned int

j

-1

int

其中已返回printf表示printf函数的返回值为7,即7个字符"j = %d\n"

以上介绍的是整型数据类型,下面介绍浮点型数据类型。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

三菱FX3U-4AD模拟量电压输入采集实例

硬件&#xff1a;&#xff30;&#xff2c;&#xff23;模块 &#xff26;&#xff38;&#xff13;&#xff27;&#xff21;-&#xff12;&#xff14;&#xff2d;&#xff34; &#xff1b;&#xff21;&#xff0f;&#xff24;模块&#xff26;&#xff38;&#xff13…

食品饮料厂做配送小程序的作用是什么

食品饮料厂品牌旗下通常有多个产品类型&#xff0c;多数是以批发为主&#xff0c;也有直营店及线上直播零售等方式&#xff0c;商家如何将品牌宣传和产品销售的更广是需要思考的&#xff0c;其销售模式也多种多样。 私域店铺也是品牌增长的重要方式&#xff0c;在【雨科】平台…

【现代C++】范围库的应用

C20引入了范围库&#xff08;Ranges library&#xff09;&#xff0c;它是标准模板库&#xff08;STL&#xff09;的一个扩展&#xff0c;提供了一种新的方式来处理序列和范围。这个库允许开发者以更声明式的方式编写代码&#xff0c;使得操作序列变得更简洁、更易读。以下是C范…

深入理解 npm、cnpm、npx、yarn 和 pnpm:JavaScript 包管理器的对比

在 JavaScript 的世界中&#xff0c;包管理器是一个重要的工具&#xff0c;它帮助我们管理、安装和升级项目的依赖。在这篇文章中&#xff0c;我们将深入探讨三个最流行的 JavaScript 包管理器&#xff1a;npm、yarn 和 pnpm。 npm&#xff08;Node Package Manager&#xff0…

电源模块效率的正确测试方法

电源效率是评价电源性能的重要指标&#xff0c;它直接关系到设备的稳定性和能源的利用效率。因此&#xff0c;对电源进行效率测试显得尤为重要。电源在工作过程中&#xff0c;会有部分能量损耗&#xff0c;因此&#xff0c;电源效率的高低&#xff0c;不仅影响着设备的性能&…

VMware虚拟机没有网,无法设置网络为桥接状态

今天需要使用Ubuntu18但现有虚拟机是Ubuntu20&#xff0c;由于硬盘空间不够大&#xff0c;所以删除了原来的虚拟机并重新搭建Ubuntu18的环境&#xff0c;然后发现虚拟机没有网络&#xff0c;而我之前的虚拟机这一切都是正常的。 在网络设置里勾选的是桥接模式但无法联网&#x…

奥维地图下载高清影像的两种方式!以及ArcGIS、QGIS、GlobalMapper、自编工具下载高清影像的方法推荐!

今天来介绍一下奥维互动地图是如何下载高清影像的&#xff0c;也不是多了不起的功能&#xff01;有朋友问&#xff0c;加上这个软件确实用的人多。 下载的高清数据在ArcGIS中打开的效果&#xff01; 开始介绍奥维之前我们也介绍一下我们之前介绍的几个方法&#xff0c;没有优劣…

面试加分项:精通Java高并发下的锁优化策略

1. 问题背景与挑战 1.1 并发编程中的挑战 在现代软件开发中&#xff0c;高并发已成为衡量系统质量的一项关键因素&#xff0c;特别是对于那些需要同时处理数以万计甚至百万级用户请求的服务。并发编程的挑战在于如何有效地同步多个线程&#xff0c;确保数据的一致性和系统的稳…

【csv-parse】使用parse方法的时候来转换为csv字符串时,会导致输出有乱码

&#x1f601; 作者简介&#xff1a;一名大四的学生&#xff0c;致力学习前端开发技术 ⭐️个人主页&#xff1a;夜宵饽饽的主页 ❔ 系列专栏&#xff1a;前端bug记录 &#x1f450;学习格言&#xff1a;成功不是终点&#xff0c;失败也并非末日&#xff0c;最重要的是继续前进…

针对实拍场景的虚拟试衣模型IDM-VTON:高保真和细节保留的虚拟试穿算法,真实环境效果领先

前言 虚拟试衣是一种将人物图像与服装图像合成&#xff0c;生成人物穿戴目标服装的图像技术。相比传统的GAN方法&#xff0c;基于扩散模型的虚拟试衣方法能够生成更加自然逼真的图像。然而&#xff0c;现有的扩散模型在保留服装细节方面仍存在局限性。 为了解决这一问题&…

Nodejs 第七十一章(libuv)

libuv 在Node.js中&#xff0c;libuv是作为其事件循环和异步I/O的核心组件而存在的。Node.js是构建在libuv之上的&#xff0c;它利用libuv来处理底层的异步操作&#xff0c;如文件I/O、网络通信和定时器等。 libuv在Node.js中扮演了以下几个重要角色&#xff1a; 事件循环&a…

一个panic问题引起对percpu变量的思考

1 问题引入 最近在分析一个panic问题时&#xff0c;发现panic现场无法与log对应起来。 先贴log: <1>[ 180.089084] Unable to handle kernel NULL pointer dereference at virtual address 00000001 <1>[ 180.099551] pgd 8bbde651 <1>[ 180.107775] …

JavaScript进阶——05-迭代器和生成器【万字长文,感谢支持】

迭代器 概念 迭代器&#xff08;Iterator&#xff09;是 JavaScript 中一种特殊的对象&#xff0c;它提供了一种统一的、通用的方式遍历个各种不同类型的数据结构。可以遍历的数据结构包括&#xff1a;数组、字符串、Set、Map 等可迭代对象。我们也可以自定义实现迭代器&…

Python GUI开发- Qt Designer环境搭建

前言 Qt Designer是PyQt5 程序UI界面的实现工具&#xff0c;使用 Qt Designer 可以拖拽、点击完成GUI界面设计&#xff0c;并且设计完成的 .ui 程序可以转换成 .py 文件供 python 程序调用 环境准备 使用pip安装 pip install pyqt5-toolsQt Designer 环境搭建 在pip安装包…

AI办公自动化:用kimi批量把word转换成txt文本

在Kimichat中输入提示词&#xff1a; 你是一个Python编程专家&#xff0c;要完成一个Python脚本编写的任务&#xff0c;具体步骤如下&#xff1a; 打开文件夹&#xff1a;F:\aword 读取里面docx格式的word文档&#xff0c; 提取word文档中的第一行文字作为txt文本文档的标题…

(done) NLP+HMM 协作,还有维特比算法

参考视频&#xff1a;https://www.bilibili.com/video/BV1aP4y147gA/?p2&spm_id_frompageDriver&vd_source7a1a0bc74158c6993c7355c5490fc600 &#xff08;这实际上是 “序列标注任务”&#xff09; HMM 的训练和预测如下图 训练过程&#xff1a;我们首先先给出一个语…

HSP_06章-1_Python_数据容器

文章目录 P76 数据容器1. 概述2. 分类 P77 列表ListP77-78 列表List的注意事项和使用细节P80 列表List的常用方法一览1. 列表生成式 P80_82 元组Tuple1. 元组的使用细节和注意事项 P83 元组的常用操作 P76 数据容器 1. 概述 1、数据容器是一种数据类型&#xff0c;有些地方也…

机器学习笔记 PostgresML教程:使用SQL进行机器学习

机器学习的基本做法是将数据转移到模型的环境中进行训练。由于今天的数据库比机器学习模型大好多个数量级,所以PostgresML的思路是,如果我们将模型引入数据集不是会容易得多吗? PostgresML 是一个建立在流行的 PostgreSQL 数据库之上的综合机器学习平台。它引入了一种称为“…

股指期货的交割日是哪一天?

股指期货的交割日&#xff0c;就好比是期货合约的“期末考试”。每个月的第三周的周五&#xff0c;就是股指期货的交割日。在这一天&#xff0c;如果你持有的期货合约还没有卖出&#xff08;平仓&#xff09;&#xff0c;那么就会按照一个特定的价格&#xff08;结算价&#xf…

学习MySQL(三):数据类型约束条件

数据类型 字符串&#xff1a;char(num) 与 varchar(num) 延申面试问题&#xff1a;char与varchar有什么区别&#xff1f; 区别1&#xff1a;定长与变长 char 固定长度&#xff0c;例如定义了char(8)&#xff0c;则这一列存储的内容长度都为8&#xff0c;不足8位则会用空格补…