第 3 章 数据类型

《Python3程序开发指南(第二版)》第3章 组合数据类型 练习 1. 修改external_sites.py程序,使用一个默认的字典。 阅读详情

第 3 章 数据类型

1.内置数据类型的长度、默认类型(有符、无符)有编译器决定,不是c++标准。各编译器对整数字面值的长度限制不同,超过一定规定长度报错,未超规定长度但超出表示范围,虽合法但不合理。同样程序在不同编译器上编译出的指令不同。

2.  (1)表示成无符或长整要在整数字面值后加U或L,大小写均可。如:b=012345L;c=235u;

(2)浮点数字面值默认为double型,要表示成float则需在浮点数后面加F或f。

3.取余运算的正负性取决于被除数的正负性,被除数正则余数正,被除数负则余数负:

11 %(-5)= 1; -11 %(-5)= -1;

4.ASCII码128个,其中33个(0——31,127)不可见的控制字符。转义字符可以表示不可见字符:

/t:水平制表符 /v:垂直制表符 /r:回车 /n换行 /a:响铃 /ddd:1-3位八进制数 /xhh:1-2位十六进制数

5.枚举型:

    (1)枚举型enum Week{Mon,Tue,Wed,Thu,Fri,Sat,Sun};默认时,第一个对应整数:0,一次类推。

枚举值虽然对应整数,但枚举变量却不能取整数值,只能通过强制类型转换:

Week week = 0; //wrong. week = Mon;week = Week(0);//right.

    (2)枚举符作为整形数的一个子集,可以直接参与整数能享有的所有运算,而且可以脱离枚举变量的定义使用:

enum Week{Mon,Tue,Wed,Thu,Fri,Sat,Sun}; if(a == Mon) cout << "monday./n";

(3)进入函数调用或其他模块时,常量需要初始化,而枚举无需定义其实体,可直接使用枚举符,代替常量使用。

6.布尔:默认输出形式为0/1,要输出true/false,需加控制符:cout << boolalpha<<d<<endl;

7.C-strig & string

C-串是字符串字面值,以一个全0位字节作为结束符。C-串长度为字符串长度加1。C串类型为const char*。

8.字符指针&字符数组

    (1)指针表示内存空间位置,输出字符指针的间接引用(*str)就是输出单个字符,输出字符指针就是输出C串。

char * str = "hello";

cout << *str <<endl; //h

cout << str <<endl; //hello

    (2)数组不能复制:

char a1[6] = "hello";

//char a2[6] = a1; //错,数组是不能复制的

(3)c串操作,默认在string.h中,标准c++中,iostream包含了它:

char * s1 = "hello"; 

char * s2 = "123";

char a[20];

strcpy(a,s1); //复制

cout << (strcmp(a,s1) == 0 ? " " :"not " )<< "equal." <<endl; //比较

cout << strcat(a,s2) << endl;//连接

cout << strrev(a) <<endl; //倒置

cout <<strset(a,'c') <<endl;//设置

cout << (strstr(s1,"ell") ? " " : "not ") << "found" <<endl;//查找字符串

cout << (strchr(s2,'c') ? " " : "not ") << "found" <<endl;//查找字符

9.string:

(1)string操作:

string a, s1 = "hello ";

string s2 = "123";

a = s1; //复制

cout << (a == s1 ? " " : "not ") << "equal." <<endl;

cout << a + s2 <<endl; //连接

reverse(a.begin(),a.end()); //倒置

cout << a <<endl; 

cout << a.replace(0,9,9,'c') <<endl; //替换

cout << (s1.find("ell") != -1 ? " " : "not ") << "found." <<endl; //查找字符串

cout << (s1.find('c') != -1 ? " " : "not ") << "found." <<endl; //查找字符

(2)cin 将前导空格(空格、回车、水平或垂直制表符)滤掉,读入单词,遇到空格结束.

         getline总是将末行的回车符滤掉.

10.数组

(1)int array[5] ={}; //error! 初始值不能为空

(2)int array[5] ={0};//若果初始个数不等于数组大小,则后面全部补零;

(3)int a[]; //error

(4)int a[] ={1,2,3}; //ok

for(int = 0; i < sizeof(a) /sizeof(a[0]);i++) //sizeof(a) 表示数组的字节数

用sizeof(a) /sizeof(a[0])而直接用数组的大小的原因: 增加了代码的通用性,当a的类型或大小变化时,此代码不变。

(5)初始化方式:

char ch1[4] ={"leo"}; //以'/0'结束

char ch2[3]={'l',''e,'o'};

char ch3[4]="leo"; //以'/0'结束

(6)全局数组和静态数组默认值为0,局部数组默认初始值不确定。

11.向量

(1)vector<int>d(b.begin(),b.begin()+3); //定义向量d,其值以此为b中的0~2(共3个)元素的值。

(2) 遍历:

for(int i = 0; i < a.size(); i++) cout << a[i];

for(vector<int>::iterator it =  a.begin(); it !=  a.end(); it++) cout << *it;

(3) capacity:供扩展之用的未用元素个数

vector<int> vec3(10);

vector<int> vec4;

cout <<vec3.size()<<endl; // 10

cout <<vec3.capacity<<endl; // 1

cout <<vec4.size()<<endl; // 0

cout <<vec4.capacity<<endl; //1

(4)向量常用操作

vec5.assign(vec.begin(),vec.begin()+4);//赋值

vec5.assign(4,2);

int x = vec.back();//尾元素

int y = vec.front();//首元素

vec6.push_back(5);//末尾插入

vec6.pop_back();//删除末尾元素

vec6.resize(10);//调整个数,多删少补

vec6.resize(10,2);

if(!vec6.empty()) cout << "not empty!"<<endl;//判空

vec6.clear();//清空,不再有元素

if(vec6.empty()) cout << "empty!"<<endl;//判空

cout <<vec3.size()<<endl; //10

cout <<vec3.capacity<<endl;// 1

cout <<vec4.size()<<endl;// 0

cout <<vec4.capacity<<endl;// 1

if(vec1 == vec) cout<<"equal!"<<endl; //比较

for(int i = 0; i < vec1.size(); i++)//遍历

cout << vec1[i] <<" ";

cout <<endl;

for(vector<int>::iterator it = vec2.begin(); it != vec2.end(); it++)//遍历

cout << *it <<" ";

12 指针

(1)指针类型转换

类型转换的目的是要逃避编译的类型检查,以使不能完成本任务的模块能凑合着使用。

三种转换方式:a. int * p = reinterpret_cast<int>(&f); b. static_cast<type>(exp) c.const_cast<type>(exp)

(2)指针+整数 = 指针,指针-整数=指针,指针-指针=整数

(3)利用指针遍历数组

int iArray[6];

for(int i = 0; i<6; i++)

iArray[i] = i * 2;

for(int *p = iArray; p<iArray+6; p++)

cout<<p<<": "<<*p<<endl;

(4)指针常量和常量指针

指针常量与指针变量相对,也就是指针的值不能改变。常量指针是指向常量的指针。Const修饰指针则为指针常量,

修饰指向的实体类型,则为常量指针。指针常量不能修改指针值,但可以修改指向的实体;常量指针可以修改指针值,但不可以修改它所指向的实体的值。常量指针常量既不能修改指针值,也不能修改它指向的实体的值。

const int * p = &a; //常量指针

int * const cp = &b;//指针常量

 int const * ip = &b;//指针常量

 const int * const dp = &b; //常量指针常量

13 引用

(1)引用定义时必须初始化 int & rint = someInt;

(2)引用只能改变它所关联的实体的值,但不能改变它本身的值。

(3)int int1 = 5;const & rInt = int1; const 为了阻止rInt 做写操作,但不妨碍实体值被改变,如:int1 = 8;

(4)高级编程多用引用,低级编程多用指针。

《Python3程序开发指南(第二版)》第2章 数据类型 练习 1.修改程序print_unicode.py,以便用户可以在命令行上输入几个单独的单词,并且只有在Unicode字符名包含 阅读详情

相关推荐

JAVAOOP课本一到五章全套练习答案

JAVAOOP中课本一到五章上机示例代码 包括解析 课后哦答案都有

字符指针

字符串常量,字符数据名,字符指针均属于同一种数据类型。 由引号(“ ”)标识,但不是用来初始化数组的字符串,是字符串常量。 字符串常量的类型是指向字符的指针(字符指针char *)。 题外话:对于《两个同样字符组成的字符串常量是不相等的》,编辑器相等的原因是编辑器自动优化的结果。 例如 #include&lt;iostream.h&gt; void main() { char buffer[...

u014769180的博客 1399

记录Nvidia AGX Orin的配置日常(二)设置上电自动开机和远程桌面

因为要拿AGX作为机器人的主控板,所以需要给他设置一下通电后无需按电源键就自动开机,然后再配置一下远程桌面。

AutomaticForever的博客 1356

【C++基础】C++中的字符串

C++支持两种字符串,一种是从C继承过来的C-字符串;另一种是string。下面对它们进行简要的分析。 【C-字符串】 1、 【简介】C-串是以一个全0位(整数0)字节作为结束符的字符序列。该全0字节既是8位的整数0,也是ASCII码的0。 (1)【空间长度】字符串长度加1,因为它末尾有一个0作为结束符 (2)【类型】C-串的类型为char*型 2、 字符指针与字符数组 (1)

376

域格4G网优模块获取

1、获取当前小区信息 接口说明 该命令用于获取当前小区信息。 语法结构 命令类型 格式 返回结果 Execute AT+SCELLINFO +SCELLINFO: <cellMode>,<mcc>,<mnc>,<lac>,<cellId>,<afrcn>,<cpi>,<rxLevel>

自由的幻想 2462

大彩串口屏+LUA避坑指南:从Flash读写到控件状态配置的5个常见问题

本文针对大彩串口屏的LUA脚本开发,深度剖析了Flash数据存储与控件状态配置中的5个常见陷阱。重点讲解了如何通过标志位安全初始化Flash、正确处理多字节数据转换,以及如何精准配置按钮与文本控件的状态与事件响应,帮助开发者提升开发效率与代码可靠性。

weixin_27945229的博客 241

c/c++学习_字符串处理

c++字符串处理?

代码猴 686

13 万字 C 语言从入门到精通保姆级教程2021 年版

13 万字C语言保姆级教程,从入门到精通。

李南江 61万+

C++期末理论考试查漏补缺

所用教材《C++程序设计教程(修订版)——设计思想与实现》,钱能著。 第1章 C++入门 程序开发过程:编辑——编译——连接——运行 编辑是将C++源程序输入计算机的过程,保存文件名为cpp。 编译是使用系统提供的编译器将源程序cpp生成机器语言的过程,目标文件为obj,由于没有得到系统分配的绝对地址,还不能直接运行。 连接是将目标文件obj转换为...

weixin_30677073的博客 803

手把手教你用内核远程call实现64位进程注入(附完整ShellCode示例)

本文深入探讨了在Windows 64位环境下,通过内核态直接操作线程TrapFrame结构实现进程注入的高级技术。文章提供了从驱动框架设计、用户态-内核态通信,到定位修改TrapFrame、编写Shellcode及执行环境恢复的完整实战指南,并附有详细的代码示例,为安全研究人员和开发者提供了绕过用户态检测、实现底层远程代码执行的新思路。

weixin_28396629的博客 344

不会写GLSL?用Cesium 1.120 + Heatmap.js 2.0.5也能搞定动态洪水模拟(附完整源码)

本文介绍了一种无需GLSL编程的3D洪水动态模拟方案,结合Cesium 1.120和Heatmap.js 2.0.5实现高效可视化。通过数据层、可视化层和集成层的技术降级方案,开发者可以快速构建专业级洪水演进效果,适用于应急管理、水利工程等场景。文章包含完整源码和性能优化技巧。

weixin_30329623的博客 520

第3章 基本数据类型

  第3章 基本数据类型   3.5字符型数据  

weixin_33994444的博客 91

【YOLO部署Android安卓手机APP】YOLO11部署到安卓实时目标检测识别——以火焰烟雾目标检测识别举例(可自定义更换其他目标)

本项目基于YOLOv11部署到手机APP实现对火焰烟雾的检测识别,当然,以此你可以按照本项目开发步骤扩展更换为其他目标进行检测,例如更换为车牌、手势、人脸面部活动、人脸表情、火焰烟雾、行人、口罩、行为、水果、植物、农作物等等部署手机APP进行检测。本文为详细设计/配置文档,包含完整所需的环境配置搭建,项目工程配置步骤等,手把手记录使用pycharm和Android studio的工程开发过程,实现YOLO部署到安卓。实战开发,亲测无误。演示视频训练了50轮进行了展示(为演示,训练轮数较少,你可以训练轮数多些

嵌入式阿齐Archie 1万+

第3章 Hive数据类型

上篇:数据仓库 Hive安装配置 1、基本数据类型 对于Hive的String类型相当于数据库的varchar类型,该类型是一个可变的字符串,不过它不能声明其中最多能存储多少个字符,理论上它可以存储2GB的字符数。 2、集合数据类型 Hive有三种复杂数据类型ARRAY、MAP 和 STRUCT。ARRAY和MAP与Java中的Array和Map类似,而STRUCT与C语言中的Struct...

weixin_39868387的博客 208

Python爬虫博客:如何抓取时事新闻信息 —— 从各大新闻网站获取实时新闻数据

发送请求:向目标新闻网站发送 HTTP 请求,获取网页内容。解析网页:使用解析库(如)从网页中提取新闻标题、摘要、内容、发布时间等。绕过反爬虫机制:使用代理、设置请求头、模拟浏览器行为等策略绕过反爬虫技术。数据存储与清洗:将抓取的数据保存到本地文件或数据库中,并进行清洗,确保数据的可用性。在抓取过程中,我们还会面对很多实际问题,比如反爬虫技术、分页抓取、动态加载的内容等。接下来,我们将逐步介绍如何使用不同技术抓取静态和动态网页,并对抓取的内容进行处理。Scrapy。

2201_76125261的博客 2131

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

第3章Hive数据类型

第3章Hive数据类型 3.1 基本数据类型 表6-1 Hive数据类型 Java数据类型 长度 例子 TINYINT byte 1byte有符号整数 20 SMALINT short 2byte有符号整数 20 INT int 4byte有符号整数 20 BIGINT long 8byte有符号整数 20 BOOLEAN boolean 布尔类型,true或者false TRUE FALSE FLOAT float 单精度浮点数 3.14159 DOUBLE do

数据飓风 971

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

第 3 章 组合数据类型

3.1 序列类型 序列类型支持成员操作符(in)、大小计算函数(len())、分片([]),并且都是可迭代的。 元组(tuple):有序的,包含0个或多个对象引用。元组是固定的不可修改。如果要修改元组可以用List()将其转换为列表。 命名元组(namedtuple):简单记录一下用法。 >>> import collections >>>...

aby9426的博客 190

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

第3章 Hive数据类型

文章目录前言原子数据复杂数据基本类型转换的转换包含关系案例实操hive类型转换hive中 日期格式转化办法: 前言 关系数据库里有表(table),分区,hive里也有这些东西,这些东西在hive技术里称为hive的数据模型 Hive支持两种数据类型,一类叫原子数据类型,一类叫复杂数据类型。 原子数据类型包括数值型、布尔型和字符串类型,具体如下表所示: 原子数据 复杂数据 复杂数据类型包括数组(ARRAY)、映射(MAP)和结构体(STRUCT),具体如下表所示: 基本类型转换的转换包含关系 案例实操

张国荣家的弟弟 1033

[Typescript]第3章-数据类型

代码运行地址:在线运行界面 https://www.typescriptlang.org/zh/play。

Zhao_Ahui的博客 1986

《学习OpenCV3》第3章 了解OpenCV的数据类型

第3章 了解OpenCV的数据类型 1. OpenCV数据类型分类 1.1 基础数据类型分类: 1.2 基础类型概述 2. 深入了解基础类型 2.1 Point类 2.2 Scalar类 2.3 size类 2.4 Rect类 2.5 RotatedRect类 2.6 固定矩阵类 2.7 固定向量类 2.8 复数类 3. 辅助对象 3.1 TermCriteria类 3.2 Range类 3.3 Ptr模板和垃圾收集 3.4 DataType<>模板 4. 工具函数 4.1 函数列表 5. 模板结构

MechMaster 8326

第3章 数据类型

3.1数据类型划分 使用关键字typeof:查看方法 typeof name 或者 typeof(name) 3.1.1简单数据类型(值类型) 四种: 字符串     数字     布尔    未定义    空      String   Number Boolean   unde...

a18740351964的博客 128
上一篇: 若干向量按长短排列
下一篇: response.setHeader()
生无涯
博客等级 码龄16年 62粉丝 73原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值