02--c++语言程序设计

本章主要讲解C++语言概述\ 基本数据类型\运算表达式\算法的基本控制结构\自定义数据类型
展开查看详情

1.C++语言程序设计 第二章 C++语言

2.C++语言程序设计 本章主要内容  C++语言概述  基本数据类型  运算表达式  算法的基本控制结构  自定义数据类型 2

3.C++语言程序设计 C++语言的产生 C++是从C语言发展演变而来的,首先是一个 C++  更好的C 语  引入了类的机制,最初的C++被称为“带类 的C” 言  1983年正式取名为C++ 概  从1989年开始C++语言的标准化工作 述  于1994年制定了ANSI C++标准草案  于1998年11月被国际标准化组织(ISO)批 准为国际标准,成为目前的C++ 3

4.C++语言程序设计 C++的特点 C++  全面兼容C –它保持了C的简洁、高效和接近汇编语言 语 等特点 言 –对C的类型系统进行了改革和扩充 概 –C++也支持面向过程的程序设计,不是一 述 个纯正的面向对象的语言  支持面向对象的方法 4

5.C++语言程序设计 C++字符集 C++  大小写的英文字母:A~Z,a~z  数字字符:0~9 语 言  特殊字符: 概 空格 ! # % ^ & * _(下划线) + = - ~ < 述 > / \ ' " ; . , () [] {} 5

6.C++语言程序设计 词法记号 关键字 C++  C++预定义的单词  标识符 程序员声明的单词,它命名程序正文中 语 的一些实体 言  文字 在程序中直接使用符号表示的数据  操作符 用于实现各种运算的符号 概  分隔符 () {} , : ; 述 用于分隔各个词法记号或程序正文  空白符 空格、制表符(TAB键产生的字符)、 换行符(Enter键所产生的字符)和注释的总称 6

7.C++语言程序设计 标识符的构成规则 C++  以大写字母、小写字母或下划线(_)开 始。 语 言  可以由以大写字母、小写字母、下划 概 线(_)或数字0~9组成。 述  大写字母和小写字母代表不同的标识 符。 7

8.C++语言程序设计 输入与输出 #include <iostream> 基 using namespace std; int main() 本 { 变量 变量? 数 int n; cout << "Hello world!" << endl; 据 cin >> n; 类 cout << "Power is " << n*n << endl; 型 } 变量? 变量? 8

9.C++语言程序设计 对象  一个对象就是一段内存,由指定类型的某个值来填充  一个变量是一个对象的名称  声明语句用于给一个对象取名 int a = 7; a: 7 char c = 'x'; c: 'x' 类型 complex<double> z(1.0,2.0); string s = "qwerty"; z: 1.0 2.0 存储 空间 s: 6 "qwerty"

10.C++语言程序设计 数据类型 —整型数据及取值范围 基 类型 说明符 位数 数值范围 本 短整 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) 10

11.C++语言程序设计 数据类型 ——实型数据 #include <iostream> 基 using namespace std; int main() 本 实型变量 { 默认为double型 数 float 4字节 const int PRICE=30;后缀 F(或 f) int num,total; 据 精度:3.4×10±38 float v ,r,h; 为 float型 后缀 L(或 l) 类 7位有效数字 double 8字节 num=10; total=num*PRICE; 为 long double 型 精度:1.7×10±308 cout<<total<<endl; 型 15位有效数字 r=2.5; long double h=3.2; 实型常量 8字节 v=3.14159*r*r*h; 精度:1.7×10±308 cout<<v<<endl; 15位有效数字 } 11

12.C++语言程序设计 数据类型 ——字符型数据(一) 基  字符常量 本 –单引号括起来的一个字符, 如:'a', 'D', '?', '$' 数  字符变量 据 –用来存放字符常量 类 例:char c1,c2; c1='a'; 型 c2='A';  字符数据在内存中的存储形式 –以ASCII码存储,占1字节,用7个二进制位 12

13.C++语言程序设计 数据类型 ——字符型数据(二)  字符数据的使用方法 基 –字符数据和整型数据之间可以运算。 本 –字符数据与整型数据可以互相赋值。 数 据  字符串常量 类 例:"CHINA" C H I N A \0 型 "a" a \0 'a' a 所以:char c; c="a"; Page 13 13

14.C++语言程序设计 数据类型 ——布尔型数据 基 本  布尔型变量的说明: 数 例:bool flag; 据 类  布尔型数据的取值: 型 只有 false 和 true 两个值 14

15.C++语言程序设计 unsigned, signed 基  类型int, short, long 和 long long 都是 本 带符号的,在类型名前添加unsigned 数 就可以得到无符号类型。如: 据 unsigned long,unsigned int 等价于 类 unsigned 型  字符型分为:char,signed char 和 unsigned char  如何选择变量的类型?

16.C++语言程序设计 声明和初始化 基 int a = 7; a: 7 本 数 int b = 9; b: 9 据 char c = 'a'; c: 'a' 类 double x = 1.2; 1.2 型 x: string s1 = "Hello, world"; s1 12 | "Hello, world" : string s2 = "1.2"; s2: 3 | "1.2"

17.C++语言程序设计 赋值与自增 基 a: 本 // changing the value of a variable 7 int a = 7; // a variable of type int called a 数 a = 9; // initialized to the integer value 7 // assignment: now change a's value to 9 据 9 类 a = a+a; // assignment: now double a's value 18 型 a += 2; // increment a's value by 2 20 ++a; // increment a's value (by 1) 21

18.C++语言程序设计 类型安全  语言规则:类型安全 基 – 对象都将只能根据其类型使用  变量使用前要初始化 本  只有变量所声明的类型操作才能被使用 数  对变量的操作都将会得到一个有效的值 理想:静态类型安全 据  – 违反类型安全的程序将不能被编译 类  编译器将报告每一违反处(理想编译器中) 理想: 动态类型安全 型  – 违反类型安全的程序在运行时会被检测到  类型安全是一件大事 – 尽力不要去违反它 – 当你编程时,编译器是你最好的朋友

19.C++语言程序设计 违背类型安全——隐式切割 基 // Beware: C++ does not prevent you from trying to put a large value 本 // into a small variable (though a compiler may warn) int main() 数 { int a = 20000; a 20000 据 char c = a; int b = c; c: ??? 类 if (a != b) // != means “not equal” cout << "oops!: " << a << "!=" << b << '\n'; 型 else cout << "Wow! We have large characters\n"; }  Try it to see what value b gets on your machine

20.C++语言程序设计 违背类型安全——变量未初始化 基 // Beware: C++ does not prevent you from trying to use a variable // before you have initialized it (though a compiler typically warns) 本 int main() { 数 int x; char c; // x gets a “random” initial value // c gets a “random” initial value 据 double d; // d gets a “random” initial value // – not every bit pattern is a valid floating-point 类 value double dd = d; // potential error: some implementations 型 // can’t copy invalid floating-point values cout << " x: " << x << " c: " << c << " d: " << d << '\n'; }  Always initialize your variables – beware: “debug mode” may initialize (valid exception to this rule: input variable)

21.C++语言程序设计 变量的存储 基  In memory, everything is just bits; type is what gives meaning to the bits 本 (bits/binary) 01100001 is the int 97 is the char 'a' (bits/binary) 01000001 is the int 65 is the char 'A' 数 (bits/binary) 00110000 is the int 48 is the char '0' 据 char c = 'a'; 类 cout << c; int i = c; // print the value of character c, which is a 型 cout << i; // print the integer value of the character c, which is 97  This is just as in “the real world”: – What does “42” mean? – You don’t know until you know the unit used  Meters? Feet? Degrees Celsius? $s? a street number? Height in inches? …

22.C++语言程序设计 数据类型 —混合运算时的类型转换 不同类型数据进行混合运算时,C++编译器  基 会自动进行类型转换。 本  为了避免不同的数据类型在运算中出现类 数 型问题,应尽量使用同种类型数据。 据  可以采用强制类型转换: 类 例如: 型 float c; int a,b; c=float(a)/float(b); 或 c=(float)a/(float)b; 22

23.C++语言程序设计 数据转换习题 基 本 数 据 类 型

24.C++语言程序设计 习题 基 本 数 据 类 型

25.C++语言程序设计 常量 基  定义: const Type var_names = literal; 本  整数常量:20/*十进制*/ 020/*八进制*/ 数 0x20/*十六进制*/ 据  浮点常量:3.14, 3.14E0, 0., 0e0, .00, 类  字符:'a'; 字符串:"Hello, World!" 型  转义序列

26.C++语言程序设计 算术运算符与算术表达式  基本算术运算符 表 + - * /(若整数相除,结果取整) 达 %(取余,操作数为整数) 式  优先级与结合性 先乘除,后加减,同级自左至右  ++, --(自增、自减) 例:i++; -- j; Page 26 26

27.C++语言程序设计 赋值运算符和赋值表达式 简单的赋值运算符"="  举例 表 n=n+5 达  表达式的类型 式 等号左边对象的类型  表达式的值 等号左边对象被赋值后的值 Page 27 27

28.C++语言程序设计 赋值运算符和赋值表达式 复合的赋值运算符  有10种复合运算符: 表 +=, -=, *=, /=, %=, 达 <<=,>>=,&=,^=,|= 式 例 a+=3 等价于 a=a+3 x*=y+8 等价于 x=x*(y+8) 28

29.C++语言程序设计 赋值运算符和赋值表达式 ——赋值表达式举例 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 29 29