240 likes | 328 Views
第二章 基本数据类型与表达式. 教学目的: 本章主要介绍各种数值类型,数据类型和数值表达式,逻辑型数据类型,和逻辑表达式以及表达式的副作用和表达式语句。 教学要求: 1. 掌握各种数据类型的基本情况和常量表示方法,掌握变量的定义方法,能够根据要解决问题的实际情况选用适当的数据类型。 2. 熟练掌握数值表达式的构造方法,能够用表达式完成程序中的数值计算。. 3. 熟练掌握逻辑表达式的构造方法,能够用逻辑表达式表达各种条件。 4. 了解表达式的副作用,能够在程序中恰当运用。 教学重点:数据类型及应用 教学难点:表达式及副作用. 长度 2 2 4 4 4 4.
E N D
第二章基本数据类型与表达式 • 教学目的: • 本章主要介绍各种数值类型,数据类型和数值表达式,逻辑型数据类型,和逻辑表达式以及表达式的副作用和表达式语句。 • 教学要求: • 1.掌握各种数据类型的基本情况和常量表示方法,掌握变量的定义方法,能够根据要解决问题的实际情况选用适当的数据类型。 • 2.熟练掌握数值表达式的构造方法,能够用表达式完成程序中的数值计算。
3.熟练掌握逻辑表达式的构造方法,能够用逻辑表达式表达各种条件。3.熟练掌握逻辑表达式的构造方法,能够用逻辑表达式表达各种条件。 • 4.了解表达式的副作用,能够在程序中恰当运用。 • 教学重点:数据类型及应用 • 教学难点:表达式及副作用
长度 2 2 4 4 4 4 值域范围 -215215-1内的整数 0216-1内的整数 -231231-1内的整数 0232-1内的整数 -231231-1内的整数 0232-1内的整数 关键字 short, short int, signed short int Unsigned short, unsigned short int int, signed int Unsigned, unsigned int long, long int, signed long int Unsigned long, unsigned long int • 类型 • 有符号短整数 • 无符号短整数 • 有符号整数 • 无符号整数 • 有符号长整数 • 无符号长整数
整形数据 • 常量表示 • ①短整型 →整型 • ②长整型 L • ③整型:十进制数:12; 八进制 012 =10 十六进制: 0X12=18,0x12=18 • 无符号数:U • 变量: • 定义及初始化: • 类型修饰符 变量名[=表达式],『,变量名[=表达式]』; • int a=99L (与定义一致)
字符型数据 • 类型:char, unsigned char (1字节) • 常量: • ①直接用引号引起来:eg: ’U’ ”abcdef” • ②转义字符 • ③代码所代表字符:八进制数;十六进制数 • ④引号及反斜杠表示法:’\’’ ’\”’ ’\\’ • ⑤字符串表示法 • 长度+1=占字节空间 • 转义字符只算一个字节 • 路径的表示法
字符型数据 • 变量char ch1=’I’; • 与整型关系:ASCII码表 char ch2=65; • 表达式求值时自动变为整型 • char a=’A’,b=66; • cout<<a<<3+6<<”3+6”; • cout<<b+3; • P20 例子
枚举型数据 (值域是有限) • 1.自定义类型 • 格式: enum 枚举名{符号表}; • 枚举名:类型修饰符 • eg:enum Weekday {Sun,Mon,Tue,Wed,Thu,Fri,Sat} • 2.与整型的关系: • 依次对应0,1,2,3,… • 表达式求值, 枚举 整型 • C++输入整型 枚举型, 输出:枚举 整型
实型数据 • 类型: • 单精度float,双精度double,长双精度long double • 常量:单精度f,长双精度L • 变量:
符号常量与常值变量 • 符号常量:#define p1 3.1416 • 常值变量: • 在变量定义前加const,定义时必须初始化,属性明确。
数值表达式 • 简单:常量,变量,函数调用 • 算术操作符: • + - * / % + - eg:10/3=3 • 位操作符: • << (相当于*2) >>(相当于整除2) | & ^ ~ • 赋值操作符= : 执行顺序从右向左 • 复合赋值 • += -= *= /= %= <<= >>= |= &= ^= • 变量?=表达式 <=> 变量=变量?表达式
增1,减1操作: ++i, i++, --i, i— • 区别 • 前增/减1:先加/减1再操作 • 后增/减1:先操作再加/减1 • 执行顺序:从右到左 • Eg: int k,d=5; k=++d*2 k= d= . int k,d=5; k=d++*2 k= d= . 12 6 10 6 注意:表达式中,连续出现+,-被识别为++,--,应避 免++(或者--)所作用的变量在同一表达式中重复出现。
sizeof操作符 • sizeof(类型修饰符)或sizeof(表达式) • 功能: • 获得一数据或数据类型所占空间的字节数
书写表达式注意 • 1.字符书写在同一水平线上。 • 2.算术运算符与数学中的运算符写法有区别。 • 3.用函数实现:乘方,开方,对数,正弦…… [math.h] • 4.括号( )无大中小之分。
类型的自动转化与强制转化 • 自动转化 • 规律:短 长, 有符号 无符号, 整型 实型, 低精度 高精度 • 强制转化 • 格式: (类型修饰符)表达式 • 类型修饰符 (表达式) • Eg: double (10/3)
逻辑型 • 修饰符:bool • 值域(两个): true false • 逻辑型表达式 • 无操作符的逻辑表达式 • 逻辑常量:true false • 逻辑变量:eg: bool a=true; • 逻辑函数调用 • 关系符表达式 • 逻辑符表达式 • 逻辑型与其它数据类型的关系: • 非0即true ,0即false
关系符表达式 • 操作符: • == != > < >= <= • 互为相反条件:3对 • 结果为逻辑型 • 优先级高于赋值,低于算术
逻辑符表达式 • 操作符: • && (与) ||(或) !(非) • 左右为逻辑型,结果为逻辑型 • 优先级:!>&&>||
条件 • 复合条件:用&&和||构成的条件 • 永真与永假条件 • 等价条件: • !!E • !(X==Y) • !(X>Y) • !(X<Y) • !(E1&&E2) • !(E1||E2) • E1&&E2 • E1||E2 E X!=Y 相反条件 X<=Y X>=Y !E1||!E2 摩根定律 !E1&&!E2 E2&&E1 结合律 E2||E1
条件表达式 • 格式: • 条件?表达式1:表达式2 • 功能: • 若条件为true时表示条件成立,它的值即为表达式1的值;若条件为false时表示条件不成立,它的值即为表达式2的值。 • 说明: • 条件为的值为逻辑值 • 表达式1/2应为同一数据类型 • 条件表达式可以嵌套 • 例子: • X.>0?1: (X<0?-1:0)
自定义类型修饰符 • 格式: • typeddf 类型修饰符说明; • 例如: • typedef int DISTANCE • 说明: • 去掉保留字typedef,与定义一个变量的格式完全相同。
表达式的副作用 • 副作用 • 表达式除了产生一个计算结果,还使参与计算的变量值改变 • 产生副作用原因: • 引入副作用操作符(赋值/复合赋值;增1/减1——作用于变量的操作) • 避免表达式错误,应注意两点 P44 • 副作用的应用 • 逗号表达式 • 表达式语句 • 没有副作用的表达式作为语句使用是毫无意义的
本章小结 • 1. 整形和实型(浮点型)是C++中用来表示数值的最主要的数据类型。C++中的整形数据或实型数据的值域及精度都是有限的,不同与数学中的整数或实数。为了满足程序中的不同需要,C++提供了不同规格的整形(short, int, long等)和不同规格的实型(fioat, double, 和long double),程序设计者可根据程序中对数据在值域,精度等方面的需要,选择适当的数据类型。 • 2. 字符型是表示字符和字符串的数据类型。C++的字符常量用单引号,字符串常量用双引号。C++字符串以ˊ|0ˊ为结束标记,ˊ|0ˊ成为字符串结束符。字符型与整形有着密切的关系:一个字符实际上就是一个作为该字符代码的整数,因此可施加于整数的操作也同样可以施加于字符。由于这一原因,可以用字符表示小整数。
本章小结 • 3. 枚举型是一种需要由程序设计者定义的数据类型。定义一个枚举型就是规定一组符号,用来表示程序中需要加以区分的不同事物。枚举型 与整型有着密切的关系:枚举型中的每一个符号惟一的对应一个整数,因此就是表示整数的符号常量。在定义枚举型时可以控制枚举符号与整数的对应关系。在程序中,枚举符号可以象整数那样加以利用。 • 4. 逻辑型的类型修饰符是bool,因此也成为布尔型,是用来表达条件的数据类型。逻辑型数据的值只有true(逻辑真,表达条件成立)或false(逻辑假,表达条件不成立)两种可能。逻辑型与整型有着密切的关系:当逻辑型数据作为 数值使用时,true就是1,false就是0;而其他类型的数据作为逻辑数据使用时,一切0值转换为false,一切非0值转换为true。
本章小结 • 5. 数值表达式的主要作用是完成数值计算。常量、变量和函数调用是三种最简单的表达式。通过操作符的连接,可以构造出任意复杂的表达式。当一个表达式中有许多操作符时,操作符的优先级和结合性决定了它们执行的程序。括弧()可以用来控制操作符的执行顺序,()具有最高的优先级。 • 6. 赋值(=)、符合赋值(+=等)以及增1减1(++,--)等是具有副作用的操作符,它们只能作用于变量。并要改变变量的值。对于这些作用于变量的操作符,除后增1和后减1外,其操作结果就是那个被作用的变量(被改变了值的变量),因此可以 继续作为“作用于变量的操作符”的作用对象。