540 likes | 680 Views
第二章 数据类型和表达式. 2.1 数据类型、常量与变量 2.2 运算符与表达式 2.3 各类数据之间的混合运算. 第二章 数据类型和表达式. 教学目标 : 1. 了解基本数据类型及其常量的表示法; 2. 掌握变量的定义及初始化方法; 3. 掌握运算符与表达式的概念 ; 4. 领会 C++ 语言的类型转换、赋值的概念。 教学重点 : 1. 数据类型与理解变量定义实质; 2. 运算符的结合性与优先级。 教学难点 : C++ 语言的类型转换、赋值的概念. 2.1 数据类型、常量与变量. 2.1.1 基本数据类型
E N D
第二章 数据类型和表达式 • 2.1 数据类型、常量与变量 • 2.2 运算符与表达式 • 2.3 各类数据之间的混合运算
第二章 数据类型和表达式 • 教学目标: 1.了解基本数据类型及其常量的表示法; 2.掌握变量的定义及初始化方法; 3.掌握运算符与表达式的概念 ; 4.领会 C++ 语言的类型转换、赋值的概念。 • 教学重点: 1.数据类型与理解变量定义实质; 2.运算符的结合性与优先级。 教学难点: C++ 语言的类型转换、赋值的概念
2.1 数据类型、常量与变量 2.1.1 基本数据类型 2.1.2 常量 2.1.3 变量
数据类型—整型数据及取值范围 基本数据类型和表达式 类型 说明符 位数 数值范围 短整 short 16 -32768~32767 基本 int 32 -231~(231-1) 长整 long 32 -231~(231-1) 无符号unsigned short 16 0~65535 unsigned [int] 32 0~(232-1)unsigned long 32 0~(232-1)
数据类型——整型数据 基本数据类型和表达式 • #include<iostream.h> • void main(void) • { • int int10,int8,int16; //定义3个整型变量 • int10=10; //默认为十进制 • int8=010; //八进制 • int16=0x10; //十六进制 • cout<<int10<<endl; • cout<<int8<<endl; • cout<<int16<<endl; • }
实型数据 基本数据类型和表达式 • 实型数又称浮点数,有两种表示方式: • 1)十进制形式: 23.0 24.5 3.56789 • 指数形式: 23E1 145e-1 356789e1 e前有数字,后面必须是整数。 实型变量分单精度 float 和双精度 double 两种形式: float:占四个字节,提供7~8位有效数字。 double: 占八个字节,提供15~16位有效数字。 举例说明
数据类型——实型数据 基本数据类型和表达式 • #include<iostream.h> • void main(void) • { float a, b; • double c, d; • a=0.01; • b=3.45678e-2; • c=3.45678e-2; • d=9.7654e-5; • cout<<"a="<<a<<'\t'<<"b="<<b<<endl; • cout<<"c="<<c<<'\t'<<"d="<<d<<endl; • } a=0.01 b=0.0345678 c=0.0345678 d=9.7654e-005 Press any key to continue
数据类型——字符型数据(一) 基本数据类型和表达式 • 字符常量 • 单引号括起来的一个字符,如:'a', 'D', '?', '$' • 字符变量 • 用来存放字符常量例:char c1,c2; c1='a'; c2='A'; • 字符数据在内存中的存储形式 • 以ASCII码存储,占1字节,用7个二进制位 Page 8
char grade; grade=65; 以下的赋值形式均是等同的。 grade='A'; grade=65 ; grade=0x41; grade=0101; #include<iostream.h> void main(void) { char a,b; a=‘A’; //输入ASCII码 b=65; //输入十进制数 cout<<a<<endl; cout<<b<<endl; } 输出: a=A b=A 即在内存中的表示均是相同的
C H I N A \0 a\0 a 数据类型——字符型数据(二) 基本数据类型和表达式 • 字符数据的使用方法 • 字符数据和整型数据之间可以运算。 • 字符数据与整型数据可以互相赋值。 • 字符串常量 例:"CHINA" "a" 'a' 所以:char c; c="a"; Page 10
非打印字符 有些ASCII的字符代表某些操作,不能打印出来,如回车、退格等,可用两种方式表示这些字符。 1)用ASCII码的形式char re=13; 2)用转义字符char re=‘\n’; 基本数据类型和表达式
转义字符 含 义 ASCII代码 \a 响铃 7 \n 换行,将当前位置移到下一行开头 10 \t 水平制表(跳到下一个tab位置) 9 \b 退格,将当前位置移到前一列 8 \r 回车,将当前位置移到本行开头 13 \f 换页,将当前位置移到下页开头 12 \ v 竖向跳格 8 \\ 反斜杠字符“\” 92 \′ 单引号(撇号)字符 39 \" 双引号字符 34 \0 空字符 0 \ddd 1到3位8进制数所代表的字符 \xhh 1到2位16进制数所代表的字符 2014/10/2 12
数据类型——布尔型数据 基本数据类型和表达式 • 布尔型变量的说明:例:bool flag; • 布尔型数据的取值:只有 false和 true两个值
常量与变量 常量:在程序运行过程中,其值一直保持不变的量为常量。 常量也区分不同的类型:30,40 为整型,30.0,40.0为实型,编辑器只是根据其表面形式来判断其类型。 变量:在程序运行过程中,其值可以改变的量为变量。 变量在程序的执行中能够赋值,发生变化。变量有一个名字,并在使用之前要说明其类型,一经说明,就在内存中占据与其类型相应的存储单元。
变量 • 在程序的执行过程中,其值可以改变的量称为变量。 • 变量名必须用标识符来标识。 • 变量根据其取值的不同值域,分为不同类型的变量:整型变量、实型变量、字符型变量、构造型变量、指针型变量等等。
变量 4) 对于任一变量,编译程序要为其分配若干个字节(连续的)的内存单元,以便保存变量的取值。 5) 当要改变一个变量的值时,就是把变量的新的取值存放到为该变量所分配的内存单元中;用到一个变量的值时,就是从该内存单元中取出数据。 6) 不管什么类型的变量,通常均是变量的说明在前,使用变量在后。
数据类型——变量初始化 基本数据类型和表达式 在定义变量的同时给变量赋值,即在内存中开辟出一个空间后马上给此空间赋值。 但这个空间的值并不是固定不变的,在程序的运行中一样可以改变。 int a=4; //定义语句,在开辟空间后马上为空间赋值 a=6; //重新为该空间赋值 char a='\x64', b='d'; int a1=6, a2=98; a=‘A’; b=‘\n’; a1=011; a2=121; Page 17
数据类型——变量初始化 基本数据类型和表达式 例:int a=3; double f=3.56; char c='a'; int c(5); Page 18
变量先声 明后使用 符号常量 常量 变量 数据类型——常量与变量 基本数据类型和表达式 #include <iostream> using namespace std; void main(void) { const int PRICE=30; int num,total; float v ,r,h; num=10; total=num*PRICE; cout<<total <<endl; r=2.5; h=3.2; v=3.14159*r*r*h; cout<<v <<endl; } Page 19
数据类型—混合运算时的类型转换 基本数据类型和表达式 • 不同类型数据进行混合运算时,C++编译器会自动进行类型转换。 • 为了避免不同的数据类型在运算中出现类型问题,应尽量使用同种类型数据。 • 可以采用强制类型转换: 例如:float c;int a,b;c=float(a)/float(b); 或 c= (float)a/(float)b;
标识符常量 基本数据类型和表达式 在C++中有二种方法定义标识符常量,一种是使用编译预处理指令;另一种是使用C++的常量说明符const。 Page 21
标识符常量 基本数据类型和表达式 例如: #define PRICE 30 //在程序中凡是出现PRICE均用30替代 #define PI 3.1415926 #define S “China” const float pi=3.1415926; //将变量pi定义为不可变的常量 Page 22
标识符常量 基本数据类型和表达式 • #include<iostream.h> • #define PI 3.14156 • #define S "China" • void main(void) • { • const float pi=3.14156; //变量作为常量使用 • cout<<"PI="<<PI<<endl; • cout<<"10*PI="<<10*PI<<endl; • cout<<S<<endl; • // PI=PI+3; • // pi=pi+4; • cout<<"PI="<<PI<<endl; • cout<<"pi="<<pi<<endl; • } Page 23
标识符常量 基本数据类型和表达式 下列常量的表示在C++中是否合法?若不合法,指出原因;若合法,则指出常量的数据类型。 32767 35u 1.25e3.4 3L 0.0086e-32 “Computer System”“a”‘a’ -0 +0 .5 -.567 Page 24
2.2 运算符与表达式 2.2.1 运算符介绍 2.2.2 各种运算符举例
2.2.1运算符与表达式 基本数据类型和表达式 计算机:利用内存中的数据进行计算,通过计算得出的结果(值)来帮助人们进行生产和生活。 Page 26
运算符与表达式 基本数据类型和表达式 • 运算符:进行某种运算的符号。 • 运算数:参与运算的常量、变量和函数。 • 表达式:在计算机程序中,表达式是计算求值的基本单位,是由运算符和运算数所组成的式子。每一个表达式都有一个值!!!Page 28 Page 27
算术运算符与算术表达式 基本数据类型和表达式 • 基本算术运算符 + - * / (若整数相除,结果取整) %(取余,操作数为整数) • 优先级与结合性 先乘除,后加减,同级自左至右 • ++, --(自增、自减)Page29 例:i++; -- j; Page 28
赋值运算符和赋值表达式简单的赋值运算符"=" 基本数据类型和表达式 • 举例n=n+5 • 表达式的类型等号左边对象的类型 • 表达式的值等号左边对象被赋值后的值 Page 29
赋值运算符和赋值表达式简单的赋值运算符"=" 基本数据类型和表达式 赋值运算符和赋值表达式 • "="左边必须是变量名。 • 若“= ”两边变量类型不同,在赋值时要进行类型转换。 • 转换原则:根据左边变量的类型转换。 bmw=2002 Page 30
赋值运算符和赋值表达式复合的赋值运算符 基本数据类型和表达式 • 有10种复合运算符:+=, -=, *=, /=, %=,<<=,>>=,&=,^=,|= • 例a+=3 等价于 a=a+3x*=y+8 等价于 x=x*(y+8)
赋值运算符和赋值表达式——赋值表达式举例 基本数据类型和表达式 a=5 表达式值为?? a=b=c=5 表达式值为?? ,a,b,c均为?? a=5+(c=6) 表达式值为?? ,a为?? ,c为?? a=(b=4)+(c=6) 表达式值为?? ,a为?? ,b为??,c为?? a=(b=10)/(c=2) 表达式值为5,a为?? ,b为?? ,c为?? a+=a-=a*a 相当于 ?? Page 32
赋值运算符和赋值表达式——赋值表达式举例 基本数据类型和表达式 a=5 表达式值为5 a=b=c=5表达式值为5,a,b,c均为5 a=5+(c=6)表达式值为11,a为11,c为6 a=(b=4)+(c=6) 表达式值为10,a为10,b为4,c为6 a=(b=10)/(c=2) 表达式值为5,a为5,b为10,c为2 a+=a-=a*a 相当于a=a+(a=a-a*a) Page 33
逗号运算和逗号表达式 基本数据类型和表达式 • 格式 表达式1,表达式2 • 求解顺序及结果 先求解1,再求解2,最终结果为表达式2的值 • 例 a=3*5 , a*4最终结果为60 Page 34
关系运算与关系表达式 基本数据类型和表达式 • 关系运算是比较简单的一种逻辑运算,优先次序为:< <= > >=== != 优先级相同(高) 优先级相同(低) • 关系表达式是一种最简单的逻辑表达式 其结果类型为 bool,值只能为 true 或 false。 • 例如:a>b,c<=a+b,x+y==3
逻辑运算与逻辑表达式 基本数据类型和表达式 • 逻辑运算符!(非) &&(与) ||(或)优先次序: 高 → 低 • 逻辑表达式 例如:(a>b)&&(x>y)其结果类型为 bool,值只能为 true 或 false
逻辑运算符 • 运算符 与&&或 || 非! && | | ! A B 结果 0 0 0 0 1 0 1 0 0 1 1 1 有0出0,全1出1 A,B同时成立 A B 结果 0 0 0 0 1 1 1 0 1 1 1 1 有1出1,全0出0 A或B有一个成立 A 结果 0 1 1 0 有0出1, 有1出0
逻辑运算与逻辑表达式 基本数据类型和表达式 • 例如:两个条件:江苏籍 男生 海口籍的男生 海口籍的学生和所有男生 非海口籍的学生 海口籍&&男生 海口籍||男生 !海口籍 注意:1.优先级:!&&| | !算术关系逻辑赋值逗号
逻辑运算与逻辑表达式 基本数据类型和表达式 注意: 1.优先级:!&&| | !算术关系逻辑赋值逗号 2.作为条件,所有非0值均为真;作为结果,只有0或1两种。 5>3 && 2 || 8<4-!0 3.不可写为 1<x<10 应为:1<x && x<10
逻辑运算与逻辑表达式 基本数据类型和表达式 注意: 4.当前面的表达式可以得出整个表达式的结果时,不必再求后面的表达式。 a&&b&&c 当a为0时,表达式为0,不必求b与c。 a||b||c 当a为1时,表达式为1,不必求b与c。
条件运算符与条件表达式 基本数据类型和表达式 • 一般形式 表达式1?表达式2:表达式3 表达式1 必须是 bool 类型 • 执行顺序 • 先求解表达式1, • 若表达式1的值为true,则求解表达式2,表达式2的值为最终结果 • 若表达式1的值为false,则求解表达式3,表达式3的值为最终结果 • 例: x=a>b? a:b;
条件运算符与条件表达式 基本数据类型和表达式 • 注意: • 条件运算符优级高于赋值运算符,低于逻辑运算符 • 表达式2、3的类型可以不同,条件表达式的最终类型为 2 和 3 中较高的类型。 • 例: x=a>b? a:b; ① ②
sizeof 运算符 基本数据类型和表达式 • 语法形式sizeof (类型名)或 sizeof (表达式) • 结果值:“类型名”所指定的类型或“表达式”的结果类型所占的字节数。 • 例: sizeof(short) sizeof(x)
位运算——按位与(&) 基本数据类型和表达式 • 运算规则 • 将两个运算量的每一个位进行逻辑与操作 • 举例:计算 3 & 5 3: 0 0 0 0 0 0 1 1 5:(&) 0 0 0 0 0 1 0 1 3 & 5: 0 0 0 0 0 0 0 1 • 用途: • 将某一位置0,其它位不变。例如:将 char 型变量 a 的最低位置 0: a = a & 0376; • 取指定位。例如:有 char c; int a; 取出 a 的低字节,置于 c 中:c = a & 0377;
位运算——按位或(|) 基本数据类型和表达式 • 运算规则 • 将两个运算量的每一个位进行逻辑或操作 • 举例:计算 3 | 5 3: 0 0 0 0 0 0 1 1 5:(|) 0 0 0 0 0 1 0 1 3 | 5: 0 0 0 0 0 1 1 1 • 用途: • 将某些位置1,其它位不变。例如:将 int 型变量 a 的低字节置 1 :a = a | 0xff;
位运算——按位异或(^) 基本数据类型和表达式 • 运算规则 两个操作数进行异或:若对应位相同,则结果该位为 0,若对应位不同,则结果该位为 1, • 举例:计算 071^052 071: 0 0 1 1 1 0 0 1 052: (^) 0 0 1 0 1 0 1 0 071^052 : 0 0 0 1 0 0 1 1
位运算——按位异或(^) 基本数据类型和表达式 • 用途: • 使特定位翻转(与0异或保持原值,与1异或取反) 例如:要使 01111010 低四位翻转: 0 1 1 1 1 0 1 0 (^) 0 0 0 0 1 1 1 1 0 1 1 1 0 1 0 1
位运算——取反(~) 基本数据类型和表达式 单目运算符,对一个二进制数按位取反。 例: 025:0000000000010101 ~025:1111111111101010
位运算——移位 基本数据类型和表达式 • 左移运算(<<) 左移后,低位补0,高位舍弃。 • 右移运算(>>) 右移后,低位:舍弃 高位:无符号数:补0 有符号数:补“符号位”
运算符优先级 基本数据类型和表达式 括号 ++,--,sizeof *, /, % +, - ==, != 位运算 && || ?: 赋值运算 逗号运算 高 低