第2章 基本数据类型、运算符与表达式
- 格式:docx
- 大小:48.90 KB
- 文档页数:10
C++的特点:1.支持抽象数据类型2.多态性,一个接口,多重算法,支持早期联编和滞后联编3.继承性,保证了代码复用,支持分类的概念一个c++程序由一个或多个函数构成,并且在这些函数中只有一个主函数main ,它是程序执行的入口。
C++程序严格区别字母的大小写。
第2章 基本数据类型、运算符与表达式【内容提要】 数据类型 变量与常量 运算符与表达式 简单输入与输出 【重点与难点】 2.1 数据类型在C++程序里,每个名字都有一个与之相关联的类型,这个类型决定了可以对这个名字所指代的实体应用什么操作,并决定这些操作将如何做出解释。
图中Type 表示非控数据类型。
2.1.1 基本数据类型逻辑型:又称布尔型,用关键字bool 表示。
有两个值true 或false 。
true 可以转换成整数1,false 可以转换成整数0。
与此对应,整数也可以隐式的转换成bool 值:非0的整数转换成true,0转换成false 。
数据类型基本数据类型复合数据类型字符型 char结构类型 struct 枚举类型 enum单精度型 float数组类型 Type[] 双精度型 double布尔型 bool 浮点型指针类型 Type* 联合类型 union 类类型 class 空类型 void整型 int图2.1 C++的数据类型字符型:用关键字char表示。
取值包含具体实现所用的字符集里的一个字符。
字符型数据通常占用1个字节的存储空间。
整型:用关键字int表示。
取值是计算机所能表示的所有整数。
浮点型:包括单精度型(float)和双精度型(double)。
单精度型通常占用4个字节的存储空间,双精度型通常占用8个字节的空间。
空类型:用关键字void表示。
用于说明某个函数没有返回值。
没有void类型的对象。
在基本的数据类型前可以添加修饰符,以改变基本类型的意义。
signed:有符号。
unsigned:无符号。
unsigned和signed只用于修饰char和int,且signed修饰词可以省略。
C/C++程序设计第2 章数据类型及表达式计算机学院C/C++程序设计课程组C/C++程序设计第2章主要内容本章主要介绍:基本数据类型和存储类型的说明方法,以及基本运算符的运算规则和表达式的构成方法,为后续章节的学习奠定一个基础。
C/C++程序设计2.1 C 语言的数据类型使用高级语言编写程序,主要工作有两项:一是描述数据,二是描述数据加工的方法。
数据类型图 2.1C 语言的数据类型基本类型整型实型字符型带符号长整型(简称长整型)带符号整型无符号整型无符号整型无符号短整型无符号长整型单精度型双精度型空类型构造类型指针类型枚举类型数组类型结构体类型共用体类型C/C++程序设计2.2 常量常量是程序运行过程中其值不发生变化的数据。
2.2.1 整型常量表2.1 整型数据的表示方式2.2.2 实型常量3.14、.9999、-3.14159、834.、–0.666 、6.89E-52.2.3 字符常量’x’,’a’,’A’,’b’,’$’,’#’ ,printf("\tab\rcd\n\’ef\\g");2.2.4 符号常量#define 符号常量字符串#define PI 3.14159C/C++程序设计【例2.1】求一个圆柱体体积,用符号常量代替π。
#include <stdio.h>#define PI 3.14159 /*定义PI为符号常量*/void main(){float r,h,v;scanf("%f,%f",&r,&h);v=PI*r*r*h; /* PI相当于3.14159,参与运算*/printf("Volume=%f",v);}运行时输入:3,2↙运行结果为: Volume=56.548618C/C++程序设计2.2.5 字符串常量"\tab\rcd\n\’ef\\g“"I am a student" 、"x"、""注意:’\0’和’0’不同,’\0’是编码为0的字符,而’0’则是数字0,其编码为48。
C++的特点:1.支持抽象数据类型2.多态性,一个接口,多重算法,支持早期联编和滞后联编3.继承性,保证了代码复用,支持分类的概念一个c++程序由一个或多个函数构成,并且在这些函数中只有一个主函数main ,它是程序执行的入口。
C++程序严格区别字母的大小写。
第2章基本数据类型、运算符与表达式【内容提要】 数据类型 变量与常量 运算符与表达式 简单输入与输出 【重点与难点】 2.1 数据类型在C++程序里,每个名字都有一个与之相关联的类型,这个类型决定了可以对这个名字所指代的实体应用什么操作,并决定这些操作将如何做出解释。
图中Type表示非控数据类型。
2.1.1 基本数据类型逻辑型:又称布尔型,用关键字bool 表示。
有两个值true 或false 。
true 可以转换成整数1,false 可以转换成整数0。
与此对应,整数也可以隐式的转换成bool 值:非0的整数转换成true,0转换成false 。
结构类型 struct 枚举类型 enum数组类型 Type[] 布尔型 bool 指针类型 Type* 联合类型 union 类类型 class 整型 int图2.1 C++的数据类型字符型:用关键字char表示。
取值包含具体实现所用的字符集里的一个字符。
字符型数据通常占用1个字节的存储空间。
整型:用关键字int表示。
取值是计算机所能表示的所有整数。
浮点型:包括单精度型(float)和双精度型(double)。
单精度型通常占用4个字节的存储空间,双精度型通常占用8个字节的空间。
空类型:用关键字void表示。
用于说明某个函数没有返回值。
没有void类型的对象。
在基本的数据类型前可以添加修饰符,以改变基本类型的意义。
signed:有符号。
unsigned:无符号。
unsigned和signed只用于修饰char和int,且signed修饰词可以省略。
当用unsigned 修饰词时,后面的类型说明符可以省略。
对于有符号和无符号的整型数据,它们所占的存储空间的大小相同,但它们的表数范围却不相同(对字符型意义相同)。
short:短型。
只用于修饰int,且用short修饰时,int可以省略。
long:长型。
只用于修饰int和double。
当用long修饰int时,int可以省略。
数据类型的描述确定了其内存所占空间的大小,也确定了其表示范围。
用sizeof(数据类型)可以确定某数据类型的字节长度。
请读者查看在你所用的机器上,下面类型的最大值和最小值是什么:char、short、int、long、float、double、long double 、unsigned。
2.1.2 复合数据类型数组:由具有相同数据类型的元素组成的集合。
结构体:由不同的数据类型构成的一种混合的数据结构,构成结构体的成员的数据类型一般不同,并且在内存中分别占据不同的存储单元。
共用体:是类似于结构体的一种构造类型,与结构体不同的是构成共同体的数据成员共用同一段内存单元。
枚举:将变量的值一一列举出来,每个枚举成员(枚举符)都与一个整数相对应。
按默认方式,枚举符所赋的值从0开始递增。
枚举的值也可以用整型的表达式赋值进行初始化。
如果某个枚举中所有枚举符的值均非负,该枚举的表示范围是[0: 2K-1],其中2K 是能使所有枚举符位于此范围内的最小的2的幂;如果存在负的枚举符值,该枚举的取值范围就是[-2K:2K -1]。
指针类型:指针类型变量用于存储另一变量的地址,而不能用来存放基本类型的数据。
它在内存中占据一个存储单元。
类类型:类是体现面向对象程序设计的最基本特征,也是体现C++与C最大的不同之处。
类是一个数据类型,它定义的是一种对象类型,由数据和方法组成,描述了属于该类型的所有对象的性质。
2.2变量与常量2.1.1 变量:指在运行期间其值可以改变的量。
变量有三个特征:变量类型、变量名、变量值。
命名:遵循标识符命名规则。
标识符是对实体定义的一种定义符,用来标识用户定义的常量名、变量名、函数名、文件名、数组名、和数据类型名和程序名等。
只能由字母、数字和下划线组成,且以字母或下划线开头。
命名时注意以下几点:1. C++的关键字不能用作用户自定义的实体名;2.以下划线开头的名字是保留给实现或者运行环境,用于特殊目的,在应用程序里不要采用这样的名字;3.大写与小写字母是区分的;4.见名知义。
5.维持统一的命名风格。
定义:格式: <类型名><变量名>[[=<表达式>],…]typedef:为某种类型声明一个新名字,而不是定义一种新类型。
格式:typedef <已有类型名><新类型名>2.1.2 常量:程序执行期间其值不变的量。
主要有下列几类常量。
布尔常量字符常量用单引号括起的一个字符。
在内存中,字符数据以ASCII码存储,如字符‘a’的ASCII 码为97。
以转义字符‘\’开始的字符常量后跟不同的字符表示不同的特殊字符。
字符串常量由一对双引号括起来的零个或多个字符序列。
字符串可以写在多行上,不过在这种情况下必须用反斜线‘\’表示下一行字符是这一行字符的延续。
字符串常量实际上是一个字符数组,组成数组的字符除显示给出的外,还包括字符结尾处标识字符串结束的符号‘\0’,所以字符串“abc”实际上包含4个字符:‘a’、‘b’、‘c’和‘\0’。
注意字符常量与字符串常量在表示、存储、运算方面的区别。
整型常量可以用十进制、八进制或十六进制表示。
十进制常量:一般占一个机器字长,是一个带正负号的常数(默认情况下为正数)。
八进制常量:由数字0开头,其后由若干0-7的数字组成,如0378,0123等。
十六进制常量:以0x或0X开头,其后由若干0-9的数字及A-F(或小写a-f)的字母组成,如0x123,0x3ab。
浮点型常量只能以十进制形式表示。
共有两种表示形式:小数表示法和指数表示法。
如:11.3、.2、2.3e10、-2.3E-1等。
枚举常量枚举声明形式: enum <枚举名>{<枚举符表>};枚举符可以有两种形式:<枚举符名>/<枚举符名>=<整形常量>符号常量定义形式:const <类型名><符号常量名>=<表达式>[,…];[]表示可选项,以下都采用这种标记。
定义的符号常量必须初始化。
一个符号常量可看作是一个只读变量,由const定义的常量的值不可以改变。
const的最常见的用途是作为数组的界和作为分情况标号。
2.3 运算符与表达式在程序中,表达式是计算求值的基本单位,它是由运算符和运算数组成的式子。
运算符是表示进行某种运算的符号。
运算数包含常量、变量和函数等。
C++语言的运算符按其在表2.4 简单输入与输出在C++中,I/O使用了流的概念-字符(或字节)流。
每一个I/O 设备传送和接收一系列的字节,称之为流。
输入操作可以看成是字节从一个设备流入内存,而输出操作可以看成是字节从内存流出到一个设备。
要使用C++标准的I/O流库的功能,需要包括两个头文件:iostream.h用于提供基本的输入输出功能,iomanip.h用于提供格式化的功能。
2.4.1 I/O的书写格式(基本数据类型的输入输出)头文件iostream.h包含有cin和cout对象,对应于标准输入流和标准输出流。
流读取运算符“>>”表示流的输入,可以从cin输入流中读取字符;流插入运算符“<<”表示流的输出,可以向cout输出流插入字符。
如:cout<<”hello world.”<<endl; //输出hello world,然后换行int i,j;cin>>i>>j; //输入i,j的值2.4.2使用控制符(基本数据类型输入输出的格式控制)C++中提供了大量的用于执行格式化输入输出的格式控制符,具体名称及作用请参看表2.2。
控制符描述所在头文件dec 置基数为10iostream.h hex置基数为16oct置基数为8setfill(c)设填充字符为csetprecision(n)设显示小数精度为n位setw(n)设域宽为n个字符setiosflags(ios::fixed)固定的浮点显示iomanip.hsetiosflags(ios::scientific)指数表示setiosflags(ios::left)左对齐setiosflags(ios::right)右对齐setiosflags(ios::skipws)忽略前导空白setiosflags(ios::uppercase)16进制数大写输出setiosflags(ios::lowercase)16进制数小写输出setiosflags(ios::showpoin) 显示小数点setiosflags(ios::showpos) 显示符号(正负号)setiosflags(ios::showbase) 指定在数值前输出进制(0表示八进制,0x或0X表示十六进制)表2.2 I/O流的常用控制符【典型例题】例题1:对以下各种数据类型比较所占用存储空间的大小:(1)char、int、short int、long int、double、long double.(2) signed int、unsigned int.解答:(1) 本题主要考查的知识点是各种类型所占用的存储空间的大小以及相应的表数范围。
在32位计算机中,char占1个字节,short int 占2个字节,int占4个字节,long int占4个字节,double占8个字节。
sizeof运算符用于求解某种数据类型的大小。
short和long 在修饰整型时可以省略int。
答案为:(2)对于一种确定的数据类型有符号数与无符号数所占的存储空间相同,表数范围不同。
修饰符signed和unsigned只能用于修饰字符型和整型。
答案为:例题2:下列哪一项能用作用户自定义的标识符:(a)const (b)2var (c)my name (d)var2解答:本题主要考查标识符命名规则。
C++关键字不能用于用户自定义标识符,(a)中const是关键字;第一个字符必须是字母或下划线,(b)中2var是以数字开头;不能含有空格,(c)中my name含有空格。
答案为:d。
例题3:指出下列程序中的错误:__________。
int main(){const int x;x=100;return 0;}解答:本题主要考查对符号常量的理解。
const定义的符号常量必须初始化,由const定义的常量的值不可以改变。
所以本题有两处错误:第一、没有对符号常量x进行初始化;第二、给符号常量赋值是错误的。