【C++】数据类型与输入输出(复习笔记DAY03)

数据类型

理解数据类型

类型(type)是对数据的抽象,定义了一组数据以及定义在这一组数据的操作;
类型相同的数据有相同的表示形式、存储格式以及相关的操作;
程序中所有数据都必定属于某一种数据类型。
类型的作用:确定分配空间的大小和所能进行的操作

C++语言的数据类型

基本数据类型
多种数据类型为程序提供更多的选择。
各数据类型的字节数取决于具体的编程环境。
在这里插入图片描述

变量

变量代表内存中具有某种属性的存储单元,用来存放在程序运行时可改变值的量。
每个变量由一个变量名惟一标识。
每个变量又具有一个特定的数据类型。
不同类型的变量在内存中占有存储单元不同,表示的数值范围和形式不同

1.变量的定义
变量三个要素为:类型、名字和值;
使用变量前要先进行定义,
定义的语法形式为:
类型 变量名列表; //注释
同一语句中可以定义多个同类型的变量,但不能混合定义不同类型的变量!
应该对变量进行合理的注释;
变量的命名风格—一致性
命名规则:
 第一个字符必须是字母或下划线, 不能以数字开头
 变量名不能包含“. ; , + - ”之类的特殊符号
 不能是关键字
 不要与库函数名或自定义函数重名

2.变量值的存储
变量的初始化
 数据存放在变量所对应的内存空间里(内存是存放数据和代码的硬件)
 计算机中存储的数据都为二进制形式
二进制数据最小的单位为位 (bit)
8个比特为组合起来构成字节(Byte)
若将多个字节组合起来构成字(word)
变量代表内存中具有特定属性的一个存储单元;
内存单元由操作系统按字节编号称为地址 ;
定义变量时编译器为其分配在内存的位置 ;
根据变量的类型决定变量值占用几个字节。

auto变量(c++11)

由编译器根据上下文自动确定变量的类型,如
auto i = 3; // i 是 int 型变量
auto f = 4.0f; // f 是 float 型变量
根据赋值类型自动确定变量的类型
3是整数,等效于int i =3;
4.0f是浮点数,等效于float f=4.0f

常量

程序执行过程中,常量的值始终不改变。
 常量分为直接常量和符号常量。
 直接常量也称字面常量1998、0、-3;3.14、-1.23;‘a’、‘+’和‘0’等。通常常量出现在表达式中和变量一起参与运算。
和变量一样直接常量分为不同的类型,
但是常量不存储在内存中。
理解:编译时不分配空间,运行时存在内存常量区

字符型常量
用一对单引号括起来的一个字符。
默认类型是char。
‘a’ , ‘A’, ‘#’ 合法的字符常量
‘’’ , ‘\’ 非法的字符常量
“A” 不代表字符常量

字符串常量
– 用双引号引起来的字符或字符序列。如: "Hello,world! ", “CHINA”, “a”, “$123.45”
在这里插入图片描述
不要将字符常量与字符串常量混淆。'a’是字符常量,"a"是字符串常量,二者不同。

布尔型常量
 逻辑真:true
 逻辑假:false

常量在程序中的表示方法
利用const定义常量
• 一般格式:
– const 数据类型标识符 常数名=常量值;
• 说明:
– const必须放在数据类型标识符的前面
– 数据类型标识符是一个可选项,用来指定常量的数据类型,如果省略了该数据类型,那么编译程序认为它是 int
• 如:
– const int a=10;
– 表示定义了一个值为10的整型常量,它在程序中不可改变,但可用于表达式的计算中。

符号常量:以用一个标识符来表示一个常量,
符号常量在使用之前必须先定义
#define 标识符 常量
#define是预处理命令,称为宏定义命令功能是将该标识符定义为其后的常量值。符号常量习惯用大写

整型数据

1.整型常量
十进制常量 ( Decimal , base 10 )
十进制由数字0~9组成,一个带正负号的常数,默认情况下为正数,以非零数字开始
在这里插入图片描述
123u 123L
八进制常量( Octal, base 8 )
由数字0开头,其后由若干0~7的数字组成,
表示形式:OctalDigits [ L | l ]
十六进制常量( Hexadecimal, base 16 )
以0x或0X开头,其后根若干数字及字母(大小写)( 0x | 0X ) HexDigits [ L | l ]
2.整型常量
整型数在内存中的存放形式
二进制 补码 binary complement
负数的补码:将该数的绝对值的二进制形式,按位取反再加1
三种整数类型:short int、int 、long int。
 基本类型:
一般整数默认为int类型 ,整型变量占4个字节(在32位机中)。
 短整量:
类型说明符为short int或short,整型变量占2个字节(在32位机中)。
 长整型:
类型说明符为long int或long,一般在内存中占4个字节。
在这里插入图片描述
整型数在内存中的存放形式:二进制补码
整型数的表示范围:取决于二进制位数,超过表示范围的整型数其值不可预料或者出错 , 产生溢出overflow
编译器与整型长度

浮点型数据

浮点数的类型
浮点型数据即实型数,能够保存具有小数部分的数值,数据表示范围较大及精度较高。
包括单精度(float型)、双精度(double型)和扩展的双精度(long double型)三类。
在这里插入图片描述
表示方法:
小数表示 实型分为整数部分和小数部分,浮点数可以使用后缀(f、F、l、L),默认是double)
指数表示法 科学计数法 a E n (相当于 a*10n)a为小数,E表示以10为底数,n为整数可带符号。字母e(或E)之前必须有数字,且e后面的指数必须为整数(必须有)
example:
-2.34
3.1416f
29.00
.23
0.23L
1.23E10
0.23E-4
45.e+23
-23.68E12

定义:用float、double或long double声明其类型
舍入误差:由于浮点型变量是由有限的存储单元组成的,因此能提供的有效数字总是有限的。在有效位以外的数字将被舍去。由此可能会产生一些误差。

字符型数据

1.字符常量
书写格式:
• 字符常量只能用单引号括起,不能用双引号或其它括号;
• 字符常量只能是单个字符,不能是字符串;
• 字符常量还包括转义字符,一种特殊的字符常量,以反斜线""开头,后跟一个或几个字符。
2.字符常量
编码方式:以ASCII码 (美国国家信息交换标准字符码)存储.每个字符在ASCII码表中对应一个码值.西文字符 一般占用1个字节
字符型与整型的关系:字符型数据和整型数据之间可以通用。表示方式和操作与整数相同, 但要注意范围!
用字符的ASCII 码参与运算 :‘A’=65,‘a’=65+32=97
3. 字符串常量
• 用双引号引起的0个或者多个字符为字符串常量
“How do you do.”, “CHINA”,
“$123.45”
• 在每一个字符串常量的结尾加一个 字符串结束标志‘\0’。


I/O操作

内存访问

 内存单元由操作系统按字节编号,称为地址
 一个对象占有内存的第一个字节的地址称为对
象的地址
 可以通过对象名或地址访问对象
 数据对象有两种访问形式——读和写操作

名访问:对于数据单元,名访问就是通过对象名操作对象的内容,访问形式分为“读”和“写”

地址访问:程序被编译后,系统对已声明对象保存一张名表,登记它们对象的属性< 名字,类型,地址 >C++允许通过名或地址(并根据类型)访问对象

在这里插入图片描述

输入与输出的概念

计算机从外部获取数据为输入操作
将数据从键盘、磁盘文件及网络等设备读取到内存中
数据从内存流向外部设备为输出操作
将结果呈现在显示器上,或存储在磁盘、优盘等外部设备中
输入输出是以计算机主机为主体而言的。
 输出(Output):从主机向外部输出设备输出数据。
 输入(Input):从外部通过输入设备向主机输入数据。

输入输出流(stream)
 按直线排列的0个或多个字符
 所有的输入/输出都是用流来进行的。
开始执行程序时,3个流自动连接到程序上
 标准输入流(standard input)对应的源端设备:键盘
 标准输出流(standard output)对应的目的端设备:显示器
标准错误流(standard error)对应的目的端设备:显示器

C++语言的数据输入与输出

在C++语言中,数据的输入和输出是分别使用系统所提供的输入流对象cin和输出流对象cout来完成的。
 cout和cin是C++标准库中定义的两个输入输出流对象。
 在使用过程中,要在程序的开头包含相应的头文件:
#include <iostream.h>或#include < i o s t r e a m >

数据的输出
输出流对象cout:
 输出流对象cout输出数据的语句格式为:
cout<<数据1<<数据2<<……<<数据n;
 说明:
• cout输出流对应的目的端是系统预定义的一个标准输出设备(一般是显示器)。
• “<<”是输出操作符,用于向cout输出流中插入数据。
• cout的作用是向标准输出设备上输出数据,被输出的数据可以是常量、已有值的变量或是一个表达式。
• cout会自动把数据转换成正确的字符串形式,然后输出。
说明:
• 可以在cout输出流中插入C++中的转义字符。
• 可以将多个被输出的数据写在一个cout中,各输出项间用“<<”操作符隔开即可。
但要注意cout首先按从右向左的顺序计算出各输出项的值,然后再输出各项的值。如:
– 设变量i的值为10,
– 则cout<<i<<","<<i++<<","<<i++;的输出结果为:12,11,10

• 在cout中还可以使用流控制符控制数据的输出格式,但使用这些流控制符时,要在程序中包含头文件iomanip.h。
在这里插入图片描述
在这里插入图片描述
设置域宽
– 所谓域宽就是被输出数据所占的输出宽度(单位是字符数)。设置域宽可以使用流控制符setw(n)和cout的方法cout.width(n)
– 其中n为正整数,表示域宽。但cout.width(n)和setw(n)二者都只对下一个被输出的数据有作用,若一个输出语句内有多个被输出的数据,而要保持一定格式域宽时,需要在每
一输出数据前加上cout.width(n)或setw(n)。
– 此外,当参数n的值比实际被输出数据的宽度大时,则在给定的域宽内,数据靠右输出,不足部分自动填充空格符;若被输出数据的实际宽度比n值大时,则数据所占的实际位数输出数据,设置域宽的参数n不再起作用
在这里插入图片描述
设置域内填充字符
– 在默认情况下,当被输出的数据未占满域宽时,会自动在域内靠左边填充相应个数的空格符。
– 但我们也可以设置在域内填充其他的字符,方法是利用cout的fill方法cout.fill©或setfill©。
– cout.fill©上和setfill©可以对所有被输出的数据起作用。
在这里插入图片描述
在这里插入图片描述
设置输出数据的进位计数制
– 在默认情况下,被输出的数据按十进制格式输出。
– 但可以使用流控制符hex和oct控制数据的输出格式为十六进制和八进制,一旦设置成某种进位计数制后,数据的输出就以该种数制为主,可利用流控制符dec将数制重新设成十进制。
在这里插入图片描述
在这里插入图片描述
设置浮点数的输出格式
– 对于浮点数,既可以用小数格式输出,也可以用指数格式输出。
– 这可以分别通过setiosflags(ios::fixed)和setiosflags(ios::scientific)来控制。

数据的输入

输出流对象cin
 使用输入流对象cin输入数据的格式如下:cin>>变量名1>>变量名2>>……>>变量名n;
 说明:
• cin流对应的源端设备是系统预定义的一个标准输入设备(一般是键盘)。
• cin的功能是:当程序在运行过程中执行到cin时,程序会暂停执行并等待用户从键盘输入相应数目的数据,用户输入完数据并敲回车后,cin从输入流中取得相应的数据并传送给其后的变量
• “>>”操作符后除了变量名外不得有其他数字、字符串或字符,否则系统会报错。
• 当一个cin后面同时跟有多个变量时,则用户在输入数据时的个数应与变量的个数相同,各数据之间用一个或多个空格隔开,输入完后按回车键;或者,每输入一个数据按回车键也可以。

字符串

字符串的输出
 用cout:cout<<字符串或字符数组名;
• char s[20]={“This is a string.”};则cout<<s;的输出结果为This is a string.。
• 也可直接输出字符串常量:cout<<“This is a string.”
用cout流对象的put方法:cout.put(字符或字符变量);
• 利用这种方法,每次只能输出一个字符,所以要输出整个字符串,应采用循环的方法。
在这里插入图片描述
用cout流对象的write方法:cout.write(字符串或字符数组名,字符个数n);
• 其作用是输出字符串中的前n个字符。
在这里插入图片描述
字符串的输入
 利用cin直接输入。cin>>字符数组名;
• 只能接收空白符之前的部分,即不能接收包含空白符的字符串。
利用cin流对象的getline方法 cin.getline(字符数组名, 输入字符串的最大长度n);
• 其中:
– ① 参数“字符数组名”是存放字符串的数组名称;
– ② 参数“输入字符串的最大长度n”包括字符串结束标记\0在内。
• 该种方法可以接收含有空格符、制表符的字符串。

getline()函数的定义如下所示
1. istream& getline ( istream &is , string &str , char delim );
2. istream& getline ( istream &is , string &str );
is 进行读入操作的输入流
str 用来存储读入的内容
delim 终结符,遇到该字符停止读取操作,不写的话默认为回车,如定义2中的示例。

在这里插入图片描述
利用cin流对象的get方法。
格式1:cin.get(字符数组名,输入字符串最大长度n);
格式2:[字符变量名=]cin.get();
• 说明:
– ① 格式1中的两参数的含义同getline方法。
– ② 格式2表示输入一个字符,如果要保存该字符,则在其左边写上被赋值的变量名和赋值号,如果不保存该字符,则可写为cin.get();
在这里插入图片描述


编程错误

 语法错误和警告
当代码违反了一条或者多条语法规则,在试图编译该程序时编译器能够自动识别出此类错误。有时编译器还会给出警告信息,提示程序中某行可能会出现问题。
 运行错误
程序企图执行一个非法操作时会发生运行错误,它在程序运行时由计算机检测并显示。
 逻辑错误
程序没有按照设计者的意图执行,导致无法得到预期的结果,从而产生逻辑错误。

*声明:以上内容来源于老师上课讲述和ppt内容,未经允许不得转载

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值