lh02C语言基本语法元素解析课件_第1页
lh02C语言基本语法元素解析课件_第2页
lh02C语言基本语法元素解析课件_第3页
lh02C语言基本语法元素解析课件_第4页
lh02C语言基本语法元素解析课件_第5页
已阅读5页,还剩48页未读 继续免费阅读

下载本文档

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

文档简介

1、C程序设计第2讲 C语言基本语法元素第1页,共53页。提 纲数据类型变量与常量,类型转换运算符与表达式程序设计风格第2页,共53页。类型的分类:1. 数据类型基本类型:Boolean(布尔)Character(字符)Integer(整数)Floating-point(浮点数)Void定义枚举类型:Enumeration(枚举)构造类型:Pointer(指针)Array(数组)Data structure(结构)第3页,共53页。类型的作用:决定变量或常量的合法取值范围(值集)。决定合法的(一般是用运算符或函数表示的)操作的范围(操作集)。决定变量的存储空间的大小。区分名字相同、类型不同的符号(

2、变量、函数、运算符)。决定将一种类型的值能否及如何转换成另一种类型的值(类型转换)。为编译程序提供依据,令其检查出程序中的一部分错误。1. 数据类型第4页,共53页。整型 :有符号基本整型 signed int 无符号基本整型 unsigned int有符号短整型 signed short int无符号短整型 unsigned short int有符号长整型 signed long int无符号长整型 unsigned long int注意区分取值范围。注意整数溢出。1. 数据类型第5页,共53页。举例:1. 数据类型第6页,共53页。整型溢出:#include void main()shor

3、t a,b;a=32767; b=a+1; printf(%d,%d,a,b);1. 数据类型运行结果为:32767,-32768第7页,共53页。实型(浮点数):1. 数据类型双精度浮点数:double 有效位数16位 单精度浮点数: float有效位数7位 double d;scanf(“%lf” , &d);float f; scanf(“%f” , &f);注意浮点数的运算误差。第8页,共53页。字符型:charc1,c2;c1=a;c2=b;注意:一个字符变量在内存中占一个字节。1. 数据类型例:向字符变量赋以整数。 main() char c1,c2; c1=97; c2=98;

4、/*以字符形式输出*/ printf(%c %cn,c1,c2); /*转换为整数形式输出*/ printf(%d %dn,c1,c2); 输出: a b 97 98第9页,共53页。提 纲数据类型变量与常量,类型转换运算符与表达式程序设计风格第10页,共53页。2.变量与常量变量:程序执行过程中其值可以改变的量。变量三要素:名字、类型、值double d;int a;int b=9; /赋初值int sum, x, y, z;a = 100; /赋值sum = a + b; /correctsum = b + x; /errorconst double d=3.14;const int b=

5、9; 常量:程序执行过程中其值不可以改变的量。第11页,共53页。标识符命名规则:标识符:用来标识变量名、符号常量名、函数名、数组名、类型名、文件名的有效字符序列称为标识符。命名规则:C语言规定标识符只能由字母、数字和下划线三种字符组成,且第一个字符必须为字母或下划线。大写字母和小写字母被认为是两个不同的字符。变量名尽量做到“见名知意”。关键字不能做变量名, for, continue等(错误的变量名)。变量名不要与C库函数名相同。2.变量与常量第12页,共53页。标识符命名规则举例:下面列出的是合法的标识符,也是合法的变量名:sum,average, day, month,student_n

6、ame,tan,basic下面是不合法的标识符和变量名: dohn,y 123,33,3d64,ab2. 变量与常量第13页,共53页。几个基本概念辨析:区别赋值和赋初值:区别变量值和变量地址值 int a = 10; &a区别有意义值和无意义值2. 变量与常量double d;int a;int b=9; /赋初值int sum, x, y, z;a = 100; /赋值sum = a + b; /correctsum = b + x; /error第14页,共53页。字面量分类: 整型常量浮点型常量字符型常量字符串常量枚举常量2. 变量与常量第15页,共53页。整型常量的表示方法:整型常量

7、即整常数。C整常数可用以下三种形式表示:(1) 十进制整数。如123, -456, 0。(2) 八进制整数。以0开头的数是八进制数。 如0123表示八进制数123,即(123)8. 其值为:182+281+380,等于十进制数83。 (3) 十六进制整数。以0 x开头的数是十六进制数。 如0 x123,代表十六进制数123 (123)16=1162+2161+3160=256+32+3=291。 2. 变量与常量第16页,共53页。浮点数常量的表示方法:实数(real number)又称浮点数(floating-point number)。实数有两种表示形式:十进制小数形式。82. 75.63

8、 0.42l (正确表示)指数形式。如123e3代表123103注意字母e之前必须有数字,且e后面的指数必须为整数3.2e-2 7e3 (正确表示)e-2 .e5 1e2.5 e (非法表示)2. 变量与常量第17页,共53页。字符型常量的表示方法:用一对单撇号括起一个字符来表示转义字符:反斜线后面跟上一个字符n r b ” 0 t区别数字和数字字符:0 0区别0 和 0的区别2. 变量与常量main() printf( ab ct derftgn); printf(htibbj k); 第18页,共53页。2. 变量与常量例:大小写字母的转换。#include void main() cha

9、r c1,c2; c1=a; c2=b; c1=c1-32; c2=c2-32; printf(%c%c,c1,c2);第19页,共53页。2. 变量与常量字符串常量:是用一对双撇号括起来的字符序列“you are a student. ”空串带有引号的串表示:“Please enter ” Y” or ” N” :”带有回车的串表示: “this is a string. n”字符串常量和字符常量的区别表示形式不同在内存中存储空间不同操作不同存放两者的变量不同第20页,共53页。类型转换保值转换和非保值转换保值转换安全的,数据精度不受损害,低类型到高类型。非保值转换不安全,数据精度受损害,高

10、类型到低类型,编译系统会告警。 显示转换隐式转换赋值表达式中函数返回值中第21页,共53页。显示强制转换通过强制转换运算符实现显示强制转换形式: () () 强制转换的作用:将被作用的表达式类型强制转换成所制定的类型。 double d = 21.84;int a ;a = (int)d; /a=21注意:强制转换是暂时的,仅仅在被强制时才进行转换,平时仍旧保持原来类型。int a(15), b; double d;d = 4.65 + double(a); b = 3+a;类型转换第22页,共53页。提 纲数据类型变量与常量,类型转换运算符与表达式程序设计风格第23页,共53页。运算符 C的

11、运算符有以下几类1算术运算符 (+-*/%)2关系运算符 (=!=)3逻辑运算符 (!&|)4位运算符 ( |&)5赋值运算符 (=及其扩展赋值运算符)6条件运算符 (?:) 7逗号运算符 (,) 8指针运算符 (*和&) 9求字节数运算符 (s i z e o f) 10强制类型转换运算符 ( (类型) ) 11分量运算符 (-) 12下标运算符 () 13其他 (如函数调用运算符()第24页,共53页。运算符结合性从左到右 int a , b, c; a=b=c=5; a-b+c;从右到左 int a , b, c; a=b=c=5;第25页,共53页。表达式表达式:由运算符和操作数组成的

12、式子。操作数包括常量,变量,函数和其他一些命名的标识符表达式优先级:如果对于某个运算符优先级搞不清,使用括号改变优先级。表达式种类:算术表达式 b-3+9/5逻辑表达式 a&!a关系表达式 2=3赋值表达式 a+=2条件表达式 a0?a+;a逗号表达式 a=5,a+第26页,共53页。表达式的值和类型类型值算术表达式高操作数类型关系表达式boolean 0或1逻辑表达式boolean0或1赋值表达式条件表达式冒号前后类型高的表达式的类型逗号表达式最后一个表达式最后一个表达式任何一个表达式都有确定的值和类型第27页,共53页。算术表达式 组成由算术运算符(+ - + - * / %)与位运算符(

13、 & | )组成的表达式值数值类型当表达式中各个操作数类型相同时,表达式类型与操作数类型相同。但当表达式中操作数类型不同时,计算时会发生低类型数向高类型数的强制转换,使得最终表达式的类型与高类型的操作数类型相同。第28页,共53页。算术表达式强调强调计算算术表达式时,低类型转换到高类型,表达式类型是高类型。低到高的类型转换是安全的,高到低的类型转换是不安全的,将会损失精度。 / 运算符适用于int , float, double类型,但是整型数相除,其值为整型数。第29页,共53页。自增、自减运算符作用是使变量的值增1或减1,如:+i,-i(在使用i之前,先使i的值加(减)1)i+,i-(在使

14、用i之后,使i的值加(减)1)注意区分:i=3; printf(“%d”,+i); 若改为printf(%d,i+);第30页,共53页。自增、自减运算符自增、自减运算符的作用是使变量的值增1或减1自增运算符:+i+ 等价于 i = i + 1 或 i += 1+i 等价于 i = i + 1 或 i += 1自减运算符:-i+或+i5i5i6i-或-i5i5i4第31页,共53页。自增、自减运算符的使用j = +i1i2i自增、自减运算符的使用例如:若i的值为1表达式“j = +i”的值是什么?表达式“j = i+”的值是什么?2jj = i+1i2i1j第32页,共53页。自增、自减运算符

15、的使用a+ * b 得 63a自增、自减运算符的使用例如:int a=3,b=2,c;执行“c = +a * b”之后a、b、c的值?执行“c = a+ * b”之后a、b、c的值? 2bc4a2b8c4a2b6c+a * b 得 8第33页,共53页。自增、自减运算符的副作用表达式中过度使用自增、自减运算符会带来副作用,容易产生歧义例如:若i的值为1,j的值为2,表达式“i+j”的值是什么?例如:若i的初值为1,i+i+i+等于多少?第34页,共53页。关系表达式 组成:关系运算符( = 、=、bc”的逻辑表达式为: (ab) & (bc) 若直接表示为abc,结果如何?第40页,共53页。

16、C语言中的逻辑例如,表示某条件为“真”整数k能被4整除(k % 4 = 0 )或者: !(k % 4)整数k不能被4整除(k % 4 != 0 )或者: (k % 4)关系表达式和逻辑表达式的值为真或假,在C语言中分别用数值1和0表示。特别提醒:C语言程序中,只要条件表达式的值为0,则判定为假,否则判定为真第41页,共53页。C语言中的逻辑例如,表示某条件为“真”整数k能被4整除(k % 4 = 0 )或者: !(k % 4)整数k不能被4整除(k % 4 != 0 )或者: (k % 4)关系表达式和逻辑表达式的值为真或假,在C语言中分别用数值1和0表示。特别提醒:C语言程序中,只要条件表达

17、式的值为0,则判定为假,否则判定为真第42页,共53页。逻辑表达式例如,判断闰年的条件(给定一个年号k)能被4整除,但是不能被100整除的年份是闰年伪代码表示:(k mod 4 = 0) and (k mod 100 0)C语言表达式: (k % 4 = 0 ) & (k % 100 != 0)简化形式:! (k % 4) & (k % 100)能同时被100和400整除的年份是闰年伪代码表示: (k mod 400 = 0)C语言表达式: (k % 400 = 0)简化形式: (k % 400)因此,给定一个年号k,判断是否为闰年的条件是:(k % 4 = 0) & (k % 100 !=

18、0) | ( (k % 400 = 0)或者:(!(k % 4) & (k % 100) | (!(k % 400)逻辑运算符的优先级从高到低依次是:!, &, |第43页,共53页。逻辑表达式的短路计算对于逻辑与运算,例如“a & b”,若a的逻辑值为“假”,则无需计算b的逻辑值,就可得知表达式“a & b”的逻辑值为“假”。能被4整除,但是不能被100整除的年份是闰年 (k % 4 = 0 ) & (k % 100 != 0)对于逻辑或运算,例如“a | b”,若a的逻辑值为“真”,则无需计算b的逻辑值,就可得知表达式“a | b”的逻辑值为“真”。因此,对于逻辑表达式,可以进行短路计算(既只计算表达式的部分项)。第44页,共53页。练习设a = 3, b = 4, c = 5,试计算以下表达式的值a+bc & b = ca|b+c & b c(!(a+b)+c 1) & (b +c/2)第45页,共53页。条件表达式组成:由三目运算符组成的表达式类型:不是表达式值对应的表达式的类型,而是冒号前后两个表达式中类型高的表达式的类型第46页,共53页。条件表达式举例#include void main() int a=8, j=4,k; doubl

温馨提示

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

评论

0/150

提交评论