lh-02C语言基本语法元素.ppt_第1页
lh-02C语言基本语法元素.ppt_第2页
lh-02C语言基本语法元素.ppt_第3页
lh-02C语言基本语法元素.ppt_第4页
lh-02C语言基本语法元素.ppt_第5页
已阅读5页,还剩45页未读 继续免费阅读

下载本文档

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

文档简介

C程序设计,第2讲 C语言基本语法元素,提 纲,数据类型 变量与常量,类型转换 运算符与表达式 程序设计风格,类型的分类:,1. 数据类型,基本类型: Boolean(布尔) Character(字符) Integer(整数) Floating-point(浮点数) Void,定义枚举类型: Enumeration(枚举),构造类型: Pointer(指针) Array(数组) Data structure(结构),类型的作用: 决定变量或常量的合法取值范围(值集)。 决定合法的(一般是用运算符或函数表示的)操作的范围(操作集)。 决定变量的存储空间的大小。 区分名字相同、类型不同的符号(变量、函数、运算符)。 决定将一种类型的值能否及如何转换成另一种类型的值(类型转换)。 为编译程序提供依据,令其检查出程序中的一部分错误。,1. 数据类型,整型 : 有符号基本整型 signed int 无符号基本整型 unsigned int 有符号短整型 signed short int 无符号短整型 unsigned short int 有符号长整型 signed long int 无符号长整型 unsigned long int 注意区分取值范围。 注意整数溢出。,1. 数据类型,举例:,1. 数据类型,整型溢出: #include void main() short a,b; a=32767; b=a+1; printf(“%d,%d“,a,b); ,1. 数据类型,运行结果为:32767,-32768,实型(浮点数):,1. 数据类型,双精度浮点数:double 有效位数16位,单精度浮点数: float有效位数7位,double d; scanf(“%lf” , ,float f; scanf(“%f” , ,注意浮点数的运算误差。,字符型: char c1,c2; c1=a; c2=b; 注意:一个字符变量在内存中占一个字节。,1. 数据类型,例:向字符变量赋以整数。 main() char c1,c2; c1=97; c2=98; /*以字符形式输出*/ printf(“%c %cn“,c1,c2); /*转换为整数形式输出*/ printf(“%d %dn“,c1,c2); ,输出: a b 97 98,提 纲,数据类型 变量与常量,类型转换 运算符与表达式 程序设计风格,2.变量与常量,变量:程序执行过程中其值可以改变的量。 变量三要素:名字、类型、值,double d; int a; int b=9; /赋初值 int sum, x, y, z; a = 100; /赋值 sum = a + b; /correct sum = b + x; /error,const double d=3.14; const int b=9;,常量:程序执行过程中其值不可以改变的量。,标识符命名规则: 标识符:用来标识变量名、符号常量名、函数名、数组名、类型名、文件名的有效字符序列称为标识符。 命名规则: C语言规定标识符只能由字母、数字和下划线三种字符组成,且第一个字符必须为字母或下划线。 大写字母和小写字母被认为是两个不同的字符。 变量名尽量做到“见名知意”。 关键字不能做变量名, for, continue等(错误的变量名)。 变量名不要与C库函数名相同。,2.变量与常量,标识符命名规则举例: 下面列出的是合法的标识符,也是合法的变量名:sum,average, day, month,student_name,tan,basic 下面是不合法的标识符和变量名: dohn,y 123,33,3d64,ab,2. 变量与常量,几个基本概念辨析: 区别赋值和赋初值: 区别变量值和变量地址值 int a = 10; &a 区别有意义值和无意义值,2. 变量与常量,double d; int a; int b=9; /赋初值 int sum, x, y, z; a = 100; /赋值 sum = a + b; /correct sum = b + x; /error,字面量分类:,整型常量 浮点型常量 字符型常量 字符串常量 枚举常量,2. 变量与常量,整型常量的表示方法:,整型常量即整常数。C整常数可用以下三种形式表示: (1) 十进制整数。如123, -456, 0。 (2) 八进制整数。以0开头的数是八进制数。 如0123表示八进制数123,即(123)8. 其值为:182+281+380,等于十进制数83。 (3) 十六进制整数。以0x开头的数是十六进制数。 如0x123,代表十六进制数123 (123)16=1162+2161+3160=256+32+3=291。,2. 变量与常量,浮点数常量的表示方法:,实数(real number)又称浮点数(floating-point number)。 实数有两种表示形式: 十进制小数形式。 82. 75.63 0.42l (正确表示) 指数形式。 如123e3代表123103 注意字母e之前必须有数字,且e后面的指数必须为整数 3.2e-2 7e3 (正确表示) e-2 .e5 1e2.5 e (非法表示),2. 变量与常量,字符型常量的表示方法:,用一对单撇号括起一个字符来表示 转义字符:反斜线后面跟上一个字符 n r b ” 0 t 区别数字和数字字符:0 0 区别0 和 0的区别,2. 变量与常量,main() printf(“ ab ct derftgn“); printf(“htibbj k“); ,2. 变量与常量,例:大小写字母的转换。 #include void main() char c1,c2; c1=a; c2=b; c1=c1-32; c2=c2-32; printf(“%c %c“,c1,c2); ,2. 变量与常量,字符串常量: 是用一对双撇号括起来的字符序列 “you are a student. ” 空串 带有引号的串表示:“Please enter ” Y” or ” N” :” 带有回车的串表示: “this is a string. n” 字符串常量和字符常量的区别 表示形式不同 在内存中存储空间不同 操作不同 存放两者的变量不同,类型转换,保值转换和非保值转换 保值转换安全的,数据精度不受损害,低类型到高类型。 非保值转换不安全,数据精度受损害,高类型到低类型,编译系统会告警。,显示转换 隐式转换 赋值表达式中 函数返回值中,显示强制转换通过强制转换运算符实现 显示强制转换形式: () () 强制转换的作用:将被作用的表达式类型强制转换成所制定的类型。 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;,类型转换,提 纲,数据类型 变量与常量,类型转换 运算符与表达式 程序设计风格,运算符,C的运算符有以下几类 1算术运算符 (+-*/%) 2关系运算符 (=!=) 3逻辑运算符 (!&|) 4位运算符 ( |&) 5赋值运算符 (=及其扩展赋值运算符) 6条件运算符 (?:) 7逗号运算符 (,) 8指针运算符 (*和&) 9求字节数运算符 (s i z e o f) 10强制类型转换运算符 ( (类型) ) 11分量运算符 (-) 12下标运算符 ( ) 13其他 (如函数调用运算符(),运算符 (C+扩充),C+包含了C语言中的运算符和表达式,又增加了新的运算符。 它们有 : new delete .* -* C+大多数运算符可以重载,运算符结合性,从左到右 int a , b, c; a=b=c=5; a-b+c; 从右到左 int a , b, c; a=b=c=5;,表达式,表达式:由运算符和操作数组成的式子。操作数包括常量,变量,函数和其他一些命名的标识符 表达式优先级:如果对于某个运算符优先级搞不清,使用括号改变优先级。 表达式种类:,算术表达式 b-3+9/5 逻辑表达式 aa 逗号表达式 a=5,a+,表达式的值和类型,任何一个表达式都有确定的值和类型,算术表达式,组成 由算术运算符(+ - + - * / %)与位运算符( & | )组成的表达式 值 数值 类型 当表达式中各个操作数类型相同时,表达式类型与操作数类型相同。但当表达式中操作数类型不同时,计算时会发生低类型数向高类型数的强制转换,使得最终表达式的类型与高类型的操作数类型相同。,算术表达式强调,强调 计算算术表达式时,低类型转换到高类型,表达式类型是高类型。 低到高的类型转换是安全的,高到低的类型转换是不安全的,将会损失精度。 / 运算符适用于int , float, double类型,但是整型数相除,其值为整型数。,自增、自减运算符,作用是使变量的值增1或减1,如: +i,-i(在使用i之前,先使i的值加(减)1) i+,i- (在使用i之后,使i的值加(减)1) 注意区分: i=3; printf(“%d”,+i); 若改为printf(“%d“,i+);,关系表达式,组成: 关系运算符( = = = != )组成的表达式 类型: bool 值域: 非0 - ture 0 - false,关系表达式举例,例如: 若a=3,b=2,c=1,则: 关系表达式“ab”的值为“真”,表达式的值为1。 关系表达式“(ab)=c”的值为“真” ,表达式的值为1。 关系表达式“bca”的值为“假”,表达式的值为0。,逻辑表达式,组成: 逻辑运算符(! & | )组成的表达式 类型: bool 值域: 1 / 0 最短判断原则,逻辑表达式举例,例: (1) 若a=4,则!a的值为0。 (2) 若a=4,b=5,则a&b的值为1。 (3) a、b值同前, a|b的值为1。 (4) a、b值同前, !a|b的值为1。 (5) 4&0|2的值为1。 (6) c & d的值为1。,逻辑表达式举例,例:要判别某一年year是否闰年。闰年的条件是符合下面二者之一:能被4整除,但不能被100整除。能被4整除,又能被400整除。 可以用一个逻辑表达式来表示: (year4=0 & year100!=0)|year400=0,产生真/假值的表达式,关系运算的结果为真/假 六种关系运算:、=、bc”的逻辑表达式为: (ab) & (bc) 若直接表示为abc,结果如何?,C语言中的逻辑,例如,表示某条件为“真” 整数k能被4整除 (k % 4 = 0 ) 或者: !(k % 4) 整数k不能被4整除 (k % 4 != 0 ) 或者: (k % 4),关系表达式和逻辑表达式的值为真或假,在C语言中分别用数值1和0表示。 特别提醒:C语言程序中,只要条件表达式的值为0,则判定为假,否则判定为真,C语言中的逻辑,例如,表示某条件为“真” 整数k能被4整除 (k % 4 = 0 ) 或者: !(k % 4) 整数k不能被4整除 (k % 4 != 0 ) 或者: (k % 4),关系表达式和逻辑表达式的值为真或假,在C语言中分别用数值1和0表示。 特别提醒:C语言程序中,只要条件表达式的值为0,则判定为假,否则判定为真,逻辑表达式,例如,判断闰年的条件(给定一个年号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 != 0) | ( (k % 400 = 0) 或者:(!(k % 4) & (k % 100) | (!(k % 400),逻辑运算符的优先级从高到低依次是:!, &, |,逻辑表达式的短路计算,对于逻辑与运算,例如“a & b”,若a的逻辑值为“假”,则无需计算b的逻辑值,就可得知表达式“a & b”的逻辑值为“假”。 能被4整除,但是不能被100整除的年份是闰年 (k % 4 = 0 ) & (k % 100 != 0),对于逻辑或运算,例如“a | b”,若a的逻辑值为“真”,则无需计算b的逻辑值,就可得知表达式“a | b”的逻辑值为“真”。 因此,对于逻辑表达式,可以进行短路计算(既只计算表达式的部分项)。,练习,设a = 3, b = 4, c = 5,试计算以下表达式的值 a+bc & b = c a|b+c & b c (!(a+b)+c 1) & (b +c/2),条件表达式,组成: 由三目运算符组成的表达式 类型: 不是表达式值对应的表达式的类型,而是冒号前后两个表达式中类型高的表达式的类型,条件表达式举例,#include void main() int

温馨提示

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

最新文档

评论

0/150

提交评论