《第3章c的基本数据类型概要》由会员分享,可在线阅读,更多相关《第3章c的基本数据类型概要(59页珍藏版)》请在金锄头文库上搜索。
1、第3章作业: p59 四. 2,5,6,7,8 第4章作业: p84 三. 1,3,5,7,8 每章的选择题和填空题自己做,上机验证答案!,包含在while 语句内部的要内缩两列!说明while语句内有一if和i+复合起来的复合语句。 if语句满足条件后要执行缩在其内的sum+=i;,cinn; sum=0; i=2; While(i10) if(i%2=0) sum+=i; i+; cout“the sum of even from 1 to“n“ is “sum);,缩进 While内,缩进if内,第3章 C的基本数据类型 加强自学,有效读书: 上机遇到疑惑,(1/2结果是0,而不是 0.
2、5)应该自己会在书上找答案 画第三章引言:2、3两章、理论和上机实践互相促进学习。,第3章C的基本数据类型 3.1 标识符和关键字 3.2 基本数据类型 3.3 常量 和变量 3.4 运算符 3.5 表达式,3.1 标识符和关键字(p37),原则:见名知义!不产生歧义。,标识符是C语言编程时用来标志识别的符号,以字母开头,由字母、数字和下划线组成。,在C语言中, 标识符中大小写字母是有区别的。习惯上采用小写字母表示各种标识符,如变量名、数组名、函数名等。各种语句也用小写字母,而大写字母只用来定义宏名等,用的不多。 不同的系统对标识符的长度有不同的要求, 有的要求为6个字符,有的允许使用8个字符
3、,而VC系统下的有效长度为1至32个字符。 除了少数工作单元我们用单个字符作标识符,一般的应做到见名知义,以提高程序的可读性。如用sum表示和, score表示成绩, max表示最大等等。,关键字 ANSI C规定了32个关键字(保留字),不能再用作各种标识符。auto, break, case, char, const, continue, default, do, double, else, enum, extern, float, for, goto, if, int, long, register, return, short, signed, sizeof, static, stru
4、ct, switch, typedef, union, unsigned, void, volatile, while。 它们用来表示C语言本身的特定成份, 具有相应的语义, 可构成所有的C语言语句。 12个标识符作为编译预处理的命令单词, 但使用时前面应加“”: define, elif, else, endif, error, if, ifdef, ifndef, include, line, progma, undef。,3.2 C的基本数据类型,数据类型决定: 1. 数据占内存字节数 2. 数据取值范围 3. 其上可进行的操作,3.2 基本数据类型 1. 基本数据类型 (p39 表3-
5、2),3.3 常量和变量 (p39),5 123.4 1234567.89,a, 0, $ t,“string” “a lot of”,常量是指在程序运行过程中其值不能被改变的量; C语言中有三种常量:,1. 整型常量 整型常量也称为整型常数或整数。 整型常量按进制分可分为十进制整数,八进制整数和十六进制整数。 十进制整数 十进制整数以正负号开头,后跟09的若干位数字构成。如123, -456, 789等。,3.3.1 常量,八进制整数 以基数0,1,2,3,4,5,6,7表示的数,以数字0作为前缀,作为八进制数的标志。如0123, -0456, 0765等。 十六进制整数 以基数0,1,2,
6、3,4,5,6,7,8,9,A,B,C,D,E,F表示的数,以0x作为前缀,作为十六进制数的标志。如0x123, -0xF56, 0x7ED等。,3.3.1 常量,逢二进一,逢八进一,逢十进一,逢十六进一,数制间的转换 非十进制转换为十进制:按权值展开即可, An-1An-2A1A0,n位M进制数 D=An-1Mn-1+An-2Mn-2+A1M1+A0M0 如 0x2F=2*161+15*160=47 1101B=1*23+1*22+0*21+1*20=8+4+0+1=13 2.十进制转换为非十进制:短除法 13 015 47 0x2F 3.十六进制与二进制之间的转换:一位十六进制数对应于四位
7、二进制数。,P40,2. 实型常量,分为单精度实型常量和双精度实型常量。 单精度实数占四个字节,其数值范围是: 3.410-38|x|3.41038,它的有效位最多只有7位十进制数字。 双精度实数占8个字节,取值范围是: 1.710-308|x|1.710308,它的有效位能达到16位十进制数字。 有小数形式和指数形式两种。,小数形式 正、负号开头,有若干位整数部分,后跟一个小数点,再有若干位小数部分。 如123.456,21.37,12. ,12.0。,指数形式 也称为科学计数法,分成尾数部分和指数部分。尾数部分可以是整数形式或小数形式,指数部分是一个字母“e”或“E”后跟一个整数。 2.1
8、E5 (等于2.1105), 3.7E-2 (等于3.710-2) 0.5E7 (等于0.5107) -2.8E-2 (等于-2.810-2) E7 ,53.-E3 ,2.7E 。 ,3. 字符常量 :常用字母数字+转义字符 A Z: 0x41 0x5A (p284 附录A) a z: 0x61 0x7A 0 9: 0x30 0x39 其他符号:!,#,$,%,&,*,(,),+,_. 转义字符 单引号内以“”开始,后跟字母,或最多3位八进制数或x+最多两位十六进制数。,强调程序的可读性、规范性,中国软件之所以上不去的原因之一就是“习惯问题”。印度十个人编程,会编出一样的东西,而我们十个人编程
9、可能会有十种风格。因为我们忽略了一个重要的问题,即“顾客”的感受。程序是编写给别人看的,不是给自己看的。 基本的规范(如变量的起名和缩进式)不应该自己创新,尽量模仿例题!, 变量可以在程序内的三个地方定义: A:在函数内部的一开始 B:在函数的参数(形参)中定义(形式参数) C: 在所有的函数外部 (全局变量) 在不同地方定义的变量,其作用范围不同(ch7,难点)。 在同一层次定义的变量,不能与数组、指针、函数和其它变量同名。,不同的系统中,同一个类型变量所占的空间大小是不一样的,可以查看有关手册,也可以通过编程查看其所用字节数目。 #include void main () double x
10、; x=45; cout“the size of double is “sizeof(x)endl; ,3.3.2 变量(重点) 变量是指程序执行过程中,其值可以改变的量; 变量定义的一般形式: 类型 变量名表;,每个变量都必须有类型说明; 一旦被指定为确定类型,将为它分配相应字节的内存;,合法标识符, “知名见义”;,变量必须先定义,后使用,且在同一层次中不能与其它标识符重名;,3.3.3 变量的初始化,程序中常需要对一些变量预先设置初值。 C规定, 可以在定义变量时同时使变量初始化。 变量初始化只需在定义变量时在变量名后面加一等号及一个常数。它的一般形式是: 类型 变量名=常数; char
11、 ch=a; int first=0; float x=123.45;,#include void main() int x; char ch=a; x=ch+2; / 这里x的值是a的ASCII码值97 / 加2,也就是99 cout “ ch=“chn“ x=“xendl; ,例3-1字符型数在数值运算时可以当成整型数。,初始化应用举例,3.4 C语言中的运算符 (常用的),算术运算符: +, -, *, /, %, +, - (P45 表3-7) (2) 关系运算符: , =, =, != (P47 表3-8) (3) 逻辑运算符: !, &, | (P48 表3-9) (4) 赋值运算
12、符: =, 及其双目运算符的扩展赋值 运算符 (5) 圆括号运算符 ( ) 。,1.算术运算:+ - * / % 2.关系运算:, =, , , & 5.赋值运算符:及其扩展运算符如+=等 6.条件运算符:? : 7.逗号运算符:, 8.指针运算符:*,& 9.求字节运算符:sizeof 10.强制类型转换:(类型) 11.分量运算符:. - 12.下标运算符: 13.其它( ),C运算符简介:包括13类,3.4.1. 算术运算符和赋值运算符,+, -, *, / , 先乘除后加减, 按优先级顺序进行运算,优先级高(数小)的先运算。加括号可以改变运算顺序。 如1/2=0, 1.0/2=0.5;
13、 (2) 求余运算符(%)仅用于整型数据,不能用于实型和双精度实型。它的作用是取整数除法的余数。 如1%2=1, 10%3=1,(-10)%3=-1,10%(-3)=1,三位数的整数,如何取出其个位? 十位? 百位? 准备上机程序代码时要认真琢磨p46 图3-2和图3-3!,牵扯一类编程题!,?,(3) 赋值运算符(=)是将“=”右边表达式的值赋给左边的变量。 赋值运算符左边必须是变量等有存贮单元的元素,而不能是常量或表达式。 x=x+1 x+1=x 0=X+1 ,(4) +, -(难点) 仅用于变量,在变量原值的基础上加1、减1; 如果运算符在变量前面, 则在 “引用”该变量前,先对其作加1
14、或减1运算; 如果运算符在变量后面, 则在 “引用”该变量后,再对其作加1或减1运算; y=+x; x=x+1;y=x; y=x+; y=x; x=x+1;,void main() int x,y; x=10; y=+x; cout x“,“yendl; ,运算结果为 11, 11,运行结果为 11, 10,void main() int x,y; x=10; y=x+; cout x“,“yendl; ,(5) +, -, *, /, % 可以与赋值号“=”组成复合赋值运算符+=, -=, *=, /=, %=。 a=a+b a+=b; a=a*b a*=b 书写简练,运行速度快。,2. 关
15、系运算符和逻辑运算符,当关系运算符两边的值满足关系时为真, 返回1,不满足关系时为假,返回0。 x=10; cout=9; /* 此时输出为1 */ x=5; cout=9; /* 则输出为0。 */ 字符比较按其ASCII码值进行,如AB为真。,(2) 关系运算符, =, 31; 运行输出结果为0。因为两个是同一优先级,53的结果为1, 而11的关系不满足,所以最后结果为0。 cout 1=1135; 运行输出结果为1。因为的优先级比=高,则1135的结果为1,而1=1的关系满足,所以最后结果为1。,逻辑运算结果中,1表示真,0表示假;而参加运算的量,非0表示真(1),0表示假(0); & 和 | 一旦能够确定表达式的值,就不再继续运算下去;,逻辑运算规则 非运算:0 1,1 0 与运算:表示“并且”的含义,见0为0 数学:33&x6 或运算:表示“或者”的含义,见1为1 数学:num(099)中含5的数 C中: num个位是5|num十位是5,(3) 关系和逻辑运算符的优先级都低于算术运算符(逻辑非!除外)。 如101+12完全等价于10(1+12), 其结果当然是假(即0)。 (4) 在关系和逻辑运算符组成的表达式中, 也可以像算术表达式一样, 用圆括号来