C大学基础教程第2章课件(PPT 90页)_第1页
C大学基础教程第2章课件(PPT 90页)_第2页
C大学基础教程第2章课件(PPT 90页)_第3页
C大学基础教程第2章课件(PPT 90页)_第4页
C大学基础教程第2章课件(PPT 90页)_第5页
已阅读5页,还剩85页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、C+大学基础教程第2章 基本数据类型与表达式 北京邮电大学信通院 网络搜索中心第1页,共90页。2022/7/20北京邮电大学电信工程学院计算机技术中心-2-问题1、一个程序一般需要有3个部分输入从键盘、文件读取数据,保存在内存中处理将内存中的数据进行计算或逻辑分析输出将结果显示在屏幕上或输出到文件中cincout第2页,共90页。2022/7/20北京邮电大学电信工程学院计算机技术中心-3-举例1、从键盘任意输入两个整数,并求和。2、从键盘任意输入两个实数,并求和。第3页,共90页。程序中使用的数据保存在内存中, 1、分配多大的空间存储数据? 2、如何标识数据在内存的地址? 3、如何进行复杂

2、的运算?数据类型变量和常量变量、常量和运算符组成的表达式第4页,共90页。第2章 基本数据类型与表达式2.1 词法记号和标识符2.2 基本数据类型2.3 变量和常量2.4 运算符和表达式2.5 基本输入输出第5页,共90页。2.1 词法记号和标识符第6页,共90页。2022/7/20北京邮电大学电信工程学院计算机技术中心-7-2.1 词法记号和标识符1、C+字符集英文字母:AZ,az数字字符:09特殊字符: + - * / % = ! # & | _ “ ; . , ( ) 空格第7页,共90页。2022/7/20北京邮电大学电信工程学院计算机技术中心-8-2.1 词法记号和标识符单词关键字:

3、系统预定义的单词标示符:用户自定义的单词注意: C+的表示符是大小写敏感的,即abcABC。第8页,共90页。2022/7/20北京邮电大学电信工程学院计算机技术中心-9-2.1 词法记号和标识符4、分隔符 分隔符用于分隔程序中的正文,在C+中使用下列字符作为分隔符: ( ) ,:;5、空白 在C+语句中经常出现空白(制表符、空格、空行)等,通常都忽略不计。第9页,共90页。2.2 基本数据类型第10页,共90页。2022/7/20北京邮电大学电信工程学院计算机技术中心-11-2.2、基本数据类型基本数据类型 整型: int 字符型:char 、wchar_t 实型: float、double

4、 逻辑型: bool自定义数据类型 第11页,共90页。2022/7/20北京邮电大学电信工程学院计算机技术中心-12-2.2、基本数据类型修饰符 进一步准确描述数据的大小和类型 1、长型 long 2、短型 short 3、有符号 signed 4、无符号 unsigned第12页,共90页。2022/7/20北京邮电大学电信工程学院计算机技术中心-13-2.2、基本数据类型问题-128,127 范围的整数? char -32768,32767 范围内的整数? short-231,231-1 范围内的整数? int long0,232-1 范围内的整数? unsigned int第13页,共

5、90页。2022/7/20北京邮电大学电信工程学院计算机技术中心-14-2.2、基本数据类型注意 整型int的长度等于机器的字长: 16位机:int=2字节; 32位机:int=4字节。 但是short和long表示的数据长度是固定的,任何支持标准C+的编译器都是如此,因而如果需要编写可移植性好的程序,应将整型声明为short或long。第14页,共90页。2022/7/20北京邮电大学电信工程学院计算机技术中心-15-2.2、基本数据类型例题 编写一个程序,输出基本数据类型char, int, float, double,bool的长度。提示: 使用sizeof(数据类型) 能够获取不同数据

6、类型的长度。第15页,共90页。/输出基本数据类型的长度#include using namespace std;void main()cout“char :”sizeof(char)“字节n;coutint :sizeof(int)字节n;coutfloat :sizeof(float)字节n;coutdouble:sizeof(double)字节n;coutbool :sizeof(bool)字节n;第16页,共90页。2.3 变量和常量第17页,共90页。2022/7/20北京邮电大学电信工程学院计算机技术中心-18-2.3 变量和常量什么是变量? 在C+中,变量是存储信息的地方。变量的

7、实质是内存中的一个地址空间,在这个地址空间中可以进行数据的存储和读取。变量和常量的区别 变量中的数据可以改变,而常量不行。第18页,共90页。2022/7/20北京邮电大学电信工程学院计算机技术中心-19-2.3 变量变量定义: int a, b, c; int a=0; float f1, f2; char ch;常量定义: const int a =10;第19页,共90页。例2.2:赋值运算符的使用 #include using namespace std; void main() int x,y; cinxy; /输入3、5 coutx+yxy; /输入6、8 coutx+yendl;

8、 运行结果: 8 14第20页,共90页。2022/7/20北京邮电大学电信工程学院计算机技术中心-21-2.3 关键字typedef 为已有的数据类型定义一个同义词,或者叫做别名。 例如: typedef unsigned int UINT; 关键字 数据类型 别名赋值注意: 使用typedef定义同义词时并不分配内存空间。第21页,共90页。2.3关键字define 在C语言中使用预编译指令#define定义常量。 例如: #define PI 3.1415927 关键字 常量名 值 该语句属于预编译指令,不属于C+语句,因而行尾不需要使用分号。 功能同const double PI =

9、3.1415927第22页,共90页。2022/7/20北京邮电大学电信工程学院计算机技术中心-23-2.3 常量整型常数 十进制数:100 8进制数 : 0144 16进制数:0 x64实型常数 0.123、23.12 123e5 或 123E5 (表示123*105) 第23页,共90页。2022/7/20北京邮电大学电信工程学院计算机技术中心-24-2.3 常量字符常数 1、例如:a、 ?。 2、转义字符 例如:n、t、a字符串常量 由一对双引号括起来的字符序列, 例如:“how do you do?” “hello world!”第24页,共90页。a0 x07bell(响铃)n0 x

10、0A换行r0 x0D回车t0 x09制表符v0 x0B垂直跳格b0 x08Backspace0 x5C0 x22双引号0 x27单引号 ddd 1-3位8进数 xhh 1-2位16进数第25页,共90页。例2.3:打印特殊字符#include using namespace std;void main() cout“输出字母:” aaendl; cout“输出字母:” nn;运行结果: 输出字母:a (蜂鸣器响一声) 输出字母:n (换行)第26页,共90页。2022/7/20北京邮电大学电信工程学院计算机技术中心-27-2.3 常量字符变量 char ch1=a,ch2=97, ch3 =

11、0 x61; 原因: 在内存中,字符数据以ASCII码存储,即以整数表示,所以,C+中字符数据和整数可以相互赋值。第27页,共90页。例2.4:字符数据和整型数据的转换#include using namespace std;void main() char ch=a; char ch1 = 97; cout”输出内容:”chendl; cout”输出内容:”ch1endl;运行结果: 输出内容:97 输出内容:a注意:变量在输出时,根据其本身的数据类型进行输出。第28页,共90页。例2.4:分析下面的输出?#include using namespace std;void main() in

12、t n=a; int n1 = 97; cout”输出内容:”nendl; cout”输出内容:”n1 = = != =) 3、逻辑运算符(! & |) 4、位运算符( | & ) 5、特殊运算符: 条件运算符、逗号运算符第36页,共90页。2022/7/20北京邮电大学电信工程学院计算机技术中心-37-2.4 运算符和表达式赋值运算符 1、赋值运算符就是“=” 例如:float f=3.15 2、左值:可以合法的放在“=”左边的操作数 右值:可以合法的放在“=”右边的操作数 常量都是右值,所以不能够放在“=”的左边被赋值; 变量既是左值又是右值,可以放在任何位置。第37页,共90页。2022

13、/7/20北京邮电大学电信工程学院计算机技术中心-38-2.4 运算符和表达式算术运算符 C+提供的算术运算符包括“+,-,*,/,%,+,-” 1、二元运算符: +(加),-(减),*,/,% 2、一元运算符: +(正号),-(负号),+,-第38页,共90页。2022/7/20北京邮电大学电信工程学院计算机技术中心-39-2.4 运算符和表达式算术运算符 注意: 1、“/” 根据操作数不同,运算规律也不同: 整型数为整除运算:例如5/2=2; 浮点数为通常意义的除法:即5.0/2.0=2.5。 2、“%”取余数运算符,只能对整型数进行操作,不允许对浮点数进行操作。第39页,共90页。202

14、2/7/20北京邮电大学电信工程学院计算机技术中心-40-2.4 运算符和表达式算术运算符 C+中提供了两个特殊的运算符:+,-表示将操作数减1。 +、-运算符根据操作数的位置不同,又称为前置(+i)和后置(i+) 1、前置(+i): 先自身加1,然后再将加1的值作为(+i)表达式的值; 2、后置(i+): 将i作为(i+)表达式的值,然后自身再加1。 第40页,共90页。例2.6:自增运算符的使用 #include using namespace std;void main()int i =1; cout”i=”iendl; cout”i+:”i+endl; cout”i=”iendl; c

15、out” +i:”+iendl; cout”i=”iendl; 11233第41页,共90页。2022/7/20北京邮电大学电信工程学院计算机技术中心-42-2.4 运算符和表达式算术运算符 在C+中可以将算术运算符和赋值运算符结合在一起进行运算,因此C+还提供5种复合的赋值运算符+=,-=,*=,/= 和%=。 例如: x+=y 相当于 x = x+y x-=y相当于 x = x-y x*=y相当于 x = x*y x/=y相当于 x = x/y x%=y相当于 x = x%y第42页,共90页。例如:#include using namespace stdvoid main()int x=

16、2,y=3; x*=y+8; coutxendl;原因:x*=y+8 等价于 x=x*(y+8)/显示22第43页,共90页。2022/7/20北京邮电大学电信工程学院计算机技术中心-44-2.4 运算符和表达式算术运算符 这些运算符的优先级由高到低依次为: 1、+(正号),-(负号),+,- 2、*,/,% 3、+、- 4、=、+=、-=、*=、/=、%=第44页,共90页。2022/7/20北京邮电大学电信工程学院计算机技术中心-45-2.4 运算符和表达式注意 在进行算术运算时,很可能出现溢出,溢出是指在给一个变量赋值时超出了其数据类型表示的范围。溢出不会引起编译错误的,但运行结果会出现

17、偏差。 例如: short int i=65536; coutiendl;输出结果:0第45页,共90页。2022/7/20北京邮电大学电信工程学院计算机技术中心-46-习题void main() unsigned short int i=-1; couti=、=、=、=、 2、=、!= 由关系运算符将两个表达式连接起来,就是关系表达式;关系表达式的结果类型为bool,值只能为true或false,屏幕显示为1或0。第47页,共90页。例如int a=1, b=2, c=3;couta=bendl; couta!=bendl; cout=bendl; coutabb=ca+5;coutdb &

18、 b+) cout”b的值没有被改变。”endl; coutbendl; 运行结果:2第50页,共90页。2022/7/20北京邮电大学电信工程学院计算机技术中心-51-2.4 运算符和表达式位运算符 一般高级语言:byte C语言: bit C+语言中提供了六个位运算符,可以对整数进行位操作,分别是按位与(&),按位或(|),按位异或(),按位取反(),左移位()。第51页,共90页。2022/7/20北京邮电大学电信工程学院计算机技术中心-52-2.4 运算符和表达式按位与(&) 按位与操作的作用是将两个操作数对应的每一位分别进行逻辑与操作。 例如:计算3 & 5 3:0 0 0 0 0

19、0 1 1 5:0 0 0 0 0 1 0 1 3 &5:0 0 0 0 0 0 0 1 例如: 将char a;的最低位置0: 取int a;的低字节:a=a & 0376;char c= a & 0377;第52页,共90页。2022/7/20北京邮电大学电信工程学院计算机技术中心-53-2.4 运算符和表达式按位或(|) 按位或操作的作用是将两个操作数对应的每一位分别进行逻辑或操作。 例如:计算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 例如: 将int a;的低字节置1:a = a | 0 xff;第53

20、页,共90页。2022/7/20北京邮电大学电信工程学院计算机技术中心-54-2.4 运算符和表达式按位异或() 按位异或操作的作用是将两个操作数对应的每一位分别进行异或操作。 具体运算规则: 11=0,00=0,10=01=1 例如:计算35 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 0第54页,共90页。2022/7/20北京邮电大学电信工程学院计算机技术中心-55-2.4 运算符和表达式按位异或() 例如: 如果使8位二进制数01111010的后四位翻转?可以将该二进制数与00001111进行异或操作: 0 1 1 1 1

21、 0 1 0 ()0 0 0 0 1 1 1 1 0 1 1 1 0 1 0 1第55页,共90页。2022/7/20北京邮电大学电信工程学院计算机技术中心-56-2.4 运算符和表达式按位取反() 按位取反是一个一元运算符,它的作用是将两个操作数对应的每一位分别进行取反操作。 具体运算规则:1=0,0=1。 例如:计算5 5:0 0 0 0 0 1 0 1 5:1 1 1 1 1 0 1 0第56页,共90页。2022/7/20北京邮电大学电信工程学院计算机技术中心-57-2.4 运算符和表达式左移: 按照指定的位数将一个二进制数值向右移动,右移后,移出的低位舍弃。 如果是无符号数则高位补0

22、,如果是有符号数在VC+6.0环境下高位补符号位。第57页,共90页。例子char a= -8; a =a2;cout”a=”(int)aendl;第58页,共90页。例子char a=2; a =a1;cout”a=”(int)aendl;第59页,共90页。2022/7/20北京邮电大学电信工程学院计算机技术中心-60-2.4 运算符和表达式位运算符 在C+中可以将位运算符和赋值运算符结合在一起进行运算,因此C+还提供另外5种运算符&=,|=,=,=。 例如: x&=y 相当于 x = x&y x|=y 相当于x = x|y x=y 相当于x = xy x=y 相当于 x = x=y 相当

23、于 x = xy 第60页,共90页。2022/7/20北京邮电大学电信工程学院计算机技术中心-61-2.4 运算符和表达式位运算符这些位运算符的优先级由高到低依次为:1、2、3、&4、5、|6、&=,|=,=,=第61页,共90页。2022/7/20北京邮电大学电信工程学院计算机技术中心-62-2.4 运算符和表达式条件运算符 条件运算符语法格式为: 表达式1?(表达式2):(表达式3); 运算的结果是:如果表达式1的值为真,则返回表达式2的值,否则返回表达式3的值。 例1: x = ab ? a : b; 例2: int x=0, y=1; couty?x:y)endl;第62页,共90页

24、。2022/7/20北京邮电大学电信工程学院计算机技术中心-63-2.4 运算符和表达式逗号运算符 逗号表达式的语法格式为: 表达式1,表达式2,表达式n; C+顺序计算表达式1,表达式2,表达式n的值,并将最后一次计算的结果作为逗号表达式的结果。 例如: int a,b,c; a=1,b=2,c=a+b; 第63页,共90页。例子 int a,b,c,d; d=(a=1, b=2, c=a+b, a+b+c); coutdendl;6第64页,共90页。2022/7/20北京邮电大学电信工程学院计算机技术中心-65-2.4 运算符和表达式数据类型转换 当表达式中出现多种数据类型的混合运算时,

25、往往需要进行类型转换。表达式中的类型转换分成两种: 1、隐式类型转换 2、强制类型转换。第65页,共90页。2022/7/20北京邮电大学电信工程学院计算机技术中心-66-2.4 运算符和表达式1、隐式类型转换 各种二元运算符在进行运算时都要求两个操作数的数据类型一致。如果类型不一致,则系统自动对数据进行转换(隐式类型转换)。 第66页,共90页。2022/7/20北京邮电大学电信工程学院计算机技术中心-67-1、隐式类型转换转换的基本原则: 将精度较低、范围较小的类型转换成精度较高、范围较大的类型。 double float long unsigned int char, short高低第6

26、7页,共90页。2022/7/20北京邮电大学电信工程学院计算机技术中心-68-例子void main() char a=100; unsigned char i=99; couti - aendl;输出结果:-1第68页,共90页。2022/7/20北京邮电大学电信工程学院计算机技术中心-69-1、隐式类型转换1、逻辑运算: 逻辑运算要求是bool型,系统自动将其他类型转换成bool类型,转换规则:0为false,非0为true。2、赋值运算: “=”要求左右两边的数据类型相同,如果类型不一致,则自动将右边的操作数类型向着左边的操作数类型转换。 例如: int i=3.15; coutien

27、dl;第69页,共90页。2022/7/20北京邮电大学电信工程学院计算机技术中心-70-2.4 运算符和表达式2、强制类型转换 强制类型转换通过是类型说明符和括号来实现的显式转换,其语法格式为: (数据类型名)表达式 或 数据类型名(表达式) 例如: int i=97; cout(char)iendl; /输出a float f=3.75; cout(int)f”就可以将键盘键入的数据读入到变量中。语法格式为: cin变量1变量2变量n; 例如: int a,b; char ch; cinabch;第73页,共90页。2022/7/20北京邮电大学电信工程学院计算机技术中心-74-2.5 I

28、/O流控制2、标准输出流cout cout负责将变量或常量中的数据输出到屏幕,使用插入操作符“”就可以将变量或常量的数据显示在屏幕上。 例如: cout”Hello world!n”; cout能够自动识别“”后面的数据类型并进行显示,并且可以从左到右一次显示多个变量。第74页,共90页。例子#include using namespace std;void main()int a,b;char ch;coutabch; cout”a=”a” b=”b” ch=”chendl;第75页,共90页。2022/7/20北京邮电大学电信工程学院计算机技术中心-76-2.5 I/O流控制3、IO流的格

29、式控制 库文件 iomanip 常用控制符: setfill(c) 设置填充字符 setw(n) 设置域宽为n 第76页,共90页。2022/7/20北京邮电大学电信工程学院计算机技术中心-77-2.5 I/O流控制设置输出宽度和填充字符 setw(n) 设置域宽,即设置“”符号后面的数据占用的屏幕宽度。 setfill(c) 设置填充字符,即“”符号后面的数据长度小于域宽时,使用什么字符进行填充。 第77页,共90页。setw(n) 和setfill(c)例1: coutsetw(8)asetw(8)bendl;输出结果: 例2: coutsetfill(*)setw(5)aendl;输出结

30、果:_ _ _ _ _ _ _a_ _ _ _ _ _ _b *a第78页,共90页。#include #include using namespace std;void main() coutsetfill(*) setw(2)n setw(3)n setw(4)n setw(5)n setw(6)n setw(7)n setw(8)n; * * * * * * *第79页,共90页。2022/7/20北京邮电大学电信工程学院计算机技术中心-80-2.5 I/O流控制注意1 除了setw()控制符外,其他控制符一旦设置,则对其后的所有输入输出产生影响。而setw()控制符只对其后输出的第一个

31、数据有效,对其他数据没有影响,所以如下代码: coutsetw(8) a bendl; 输出结果: _ _ _ _ _ _ _ab第80页,共90页。2022/7/20北京邮电大学电信工程学院计算机技术中心-81-2.5 I/O流控制注意2 setw()的默认为setw(0),意思是按实际输出。如果输出的数值占用的宽度超过setw(n)设置的宽度,则按实际宽度输出。 例如: float f=0.12345; coutsetw(3)fendl; 0.12345第81页,共90页。2022/7/20北京邮电大学电信工程学院计算机技术中心-82-2.5 I/O流控制3、I/O流的格式控制 C+默认输

32、出浮点数的有效位为6位,那么要想控制输出的数据的长度,该如何呢? 比如:float f=3.1234567;如何让显示结果为3.12? C+提供了setprecision(int n)可以控制显示浮点数的有效位。第82页,共90页。#include #include using namespace std;void main() float f=17/7.0;coutfendl;coutsetprecision(0)fendl;coutsetprecision(1)fendl;coutsetprecision(2)fendl;coutsetprecision(3)fendl;coutsetprecision(6)fendl;coutsetprecision(8)fendl;2.428572.4285722.42.432.428572.4285715第83页,共90页。2022/7/20北京邮电大学电信工程学院计算机技术中心-84-2.5 I/O流控制3、I/O流的格式控制 如何控制小数的位数? setiosflags(ios:fixed)控制符是用定点

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论