数据类型、运算符和表达式课件_第1页
数据类型、运算符和表达式课件_第2页
数据类型、运算符和表达式课件_第3页
数据类型、运算符和表达式课件_第4页
数据类型、运算符和表达式课件_第5页
已阅读5页,还剩39页未读 继续免费阅读

下载本文档

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

文档简介

1、1c 语言程序设计语言程序设计主讲:皇甫中民主讲:皇甫中民2程序的概念程序的概念程序:是按某种顺序排列的,使计算机能执行某种任务程序:是按某种顺序排列的,使计算机能执行某种任务的指令集合。的指令集合。程序程序=算法算法+数据结构数据结构程序设计语言:编写计算机程序所用的语言,程序设计程序设计语言:编写计算机程序所用的语言,程序设计语言按语言的级别可分为语言按语言的级别可分为低级语言低级语言和和高级语言高级语言。常见高级语言:常见高级语言:basic 、fortran、 pascal、c、c+、java等。等。源程序源程序机器语言目标程序机器语言目标程序可执行程序可执行程序汇编或编译程序汇编或编

2、译程序3第第2章章 数据类型、运算符和表达式数据类型、运算符和表达式 42.1:一个简单的:一个简单的c程序例子程序例子 #include /*函数功能函数功能:计算两个整数相加之和计算两个整数相加之和 入口参数入口参数:整型数据整型数据a和和b 返回值:返回值: 整型数整型数a和和b之和之和*/int add(int a, int b)return (a + b);/*主函数主函数*/main()int x, y, sum = 0;printf(input two integers:);scanf(%d%d, &x, &y); /*输入两个整型数输入两个整型数x和和y*/su

3、m = add(x, y); /*调用函数调用函数add计算计算x和和y相加相加之和之和*/printf(sum = %dn, sum); /*输出输出x和和y相加之和相加之和*/5说明说明1. c程序由程序由函数函数构成。构成。2. 一个一个c程序程序有且只有一个有且只有一个main函数函数,但可有多,但可有多个自定义函数。个自定义函数。3. c程序程序总是从总是从main函数开始执行函数开始执行4. 每个每个c语句均以分号结束。语句均以分号结束。5. 养成良好的程序书写风格。养成良好的程序书写风格。 如:一行一条语句如:一行一条语句 在适当的位置加注释在适当的位置加注释 /* */62.2

4、 c程序常见符号分类程序常见符号分类关键字(关键字(keyword) n又称为保留字,又称为保留字,c语言中预先规定的具有固定含义的一些单词语言中预先规定的具有固定含义的一些单词n数据类型修饰符数据类型修饰符int,控制语句控制语句return等等 标识符(标识符(identifier)n系统预定义标识符系统预定义标识符,main,printf 等等 n用户自定义标识符用户自定义标识符,add, x, y 等等运算符(运算符(operator)n34种,详见附录种,详见附录2 分隔符(分隔符(separator) n空格、回车空格、回车/换行、逗号等换行、逗号等 其它符号其它符号 n大花括号大

5、花括号“”和和“”通常用于标识函数体或者一个语句块通常用于标识函数体或者一个语句块 n“/*”和和“*/”是程序注释所需的定界符是程序注释所需的定界符 数据(数据(data)n变量(变量(variable)n常量(常量(constant) 72.3 数据类型数据类型 2.3.1 引入数据类型的目的引入数据类型的目的便于对数据按不同方式和要求进行处理便于对数据按不同方式和要求进行处理不同类型的数据代表不同的不同类型的数据代表不同的数据表示形式数据表示形式合法的取值范围合法的取值范围占用内存空间大小占用内存空间大小可参与的运算种类可参与的运算种类8单精度实型单精度实型 (float)双精度实型双精

6、度实型 (double)整型整型 (int)字符型字符型 (char)枚举类型枚举类型数组类型数组类型结构体类型结构体类型共用体类型共用体类型实型实型基本类型基本类型构造类型构造类型空类型空类型 (void)指针类型指针类型数据类型数据类型92.3.3 类型修饰符类型修饰符102.3.4 标识符命名标识符命名 是由是由字母字母、下划线下划线和和数字数字三种字符组成;三种字符组成; 第一个字符第一个字符必须为必须为字母或下划线字母或下划线; 不允许与关键字重名;不允许与关键字重名; c区分大小写。区分大小写。例:例: a3b _b +a b? int112.4 常量常量c程序中数据以程序中数据以

7、常量常量和和变量变量形式表示形式表示定义:定义:程序执行过程中值不发生改变的数据程序执行过程中值不发生改变的数据12 c c语言中可以用语言中可以用3 3种数制表示整型常量种数制表示整型常量 (1)十进制整型常量。)十进制整型常量。 (2)十六进制整型常量。(以)十六进制整型常量。(以0 x开头)开头) 例:例:0 x123 (3)八进制整型常量。)八进制整型常量。 (以(以0开头)开头) 例:例:0123 如果在整型常量加上后缀如果在整型常量加上后缀l l或或l l表示该常量为长整型常量,加表示该常量为长整型常量,加上后缀上后缀u u或或u u表示无符号整型常量。表示无符号整型常量。 例:例

8、:123l 123l 2.4.1 整型常量整型常量 例:例: -18 0789 0 x1f132.4.2 实型常量实型常量 (1 1)小数表示法小数表示法 : 例:例:-2.5-2.5、3.03.0、4.4.、.34 .34 (2 2)科学计数法科学计数法 : 例:例:-2.510-3 -2.5e-3 注意字母注意字母e(或(或e)之前必须有数字,且)之前必须有数字,且e后面指数后面指数必须为整数必须为整数 例:例: 1103 e3 1e3.0 1e3 只能用十进制表示。只能用十进制表示。 142.4.3 字符常量字符常量以以单引号单引号括起来的括起来的单个单个字符字符 a 1特殊字符常量:特

9、殊字符常量: n 换行换行 r 回车回车 b 退格退格 t 制表(横向跳格)制表(横向跳格) 单引号(单撇号)单引号(单撇号) 双引号(双撇号)双引号(双撇号) ddd 13位八进制数所代表的位八进制数所代表的ascii码字符码字符 xhh 12位十六进制数所代表的位十六进制数所代表的ascii码字符码字符 f 走纸换页走纸换页 反斜杠字符反斜杠字符例:例: 101 x41 a152.4.4 字符串常量字符串常量由一对由一对双引号双引号括起来(括起来(“”“”)的)的字符序列字符序列。 例:例: “ “welcome”welcome” “hello” “hello”说明:说明: (1 1)字符

10、序列中的字符个数称字符串长度。)字符序列中的字符个数称字符串长度。 例:课后例:课后p47p47,4 4 (2)“” (2)“”称为空串,即字符串长度为称为空串,即字符串长度为0 0。 (3 3)字符串常量中的字符是连续存储的,并在)字符串常量中的字符是连续存储的,并在最后自动加上字符最后自动加上字符00作为字符串结束标志。作为字符串结束标志。162.4.5 符号常量(宏常量)符号常量(宏常量)定义:用一个标识符代表一个常量。定义:用一个标识符代表一个常量。#include#define pi 3.1415926void main( ) float s,r,l;r=10.0;l=2*pi*r;

11、s=pi*r*r;printf(l=%f s=%fn,l,s);printf(pi=%fn,pi);172.4.6 枚举常量枚举常量当某些量仅由当某些量仅由有限个有限个数值组成时,可用枚举类型表示。数值组成时,可用枚举类型表示。枚举类型定义:枚举类型定义: enum 枚举标记枚举标记 枚举常量枚举常量1,枚举常量枚举常量n;例:例: enum weeks sun, mon, tue, wed, thu, fri, sat; enum weeks today;说明:说明: 中的每个符号代表一个整数值,而不是字符串;中的每个符号代表一个整数值,而不是字符串;182.5 变量变量 定义:定义:随着程

12、序的执行,值会发生改变的量。随着程序的执行,值会发生改变的量。变量的本质:定义一个变量就是在内存开辟若变量的本质:定义一个变量就是在内存开辟若干字节内存单元,用来存放相应类型数据。干字节内存单元,用来存放相应类型数据。变量使用原则:变量使用原则: “ “先定义,后使用先定义,后使用” 192.5.1 变量声明与初始化变量声明与初始化一般语法:一般语法: 类型关键字类型关键字 变量名变量名1,变量名,变量名2,变量名,变量名n; 整型:整型:int 实型:实型: 单精度单精度 float 双精度双精度 double 字符型:字符型: char例:例:20变量的变量的初始化初始化:在定义变量的同时

13、为其:在定义变量的同时为其赋初值赋初值。一般语法:一般语法: 类型关键字类型关键字 变量名变量名1=常量常量1,变量名,变量名n=常量常量n;例:例:212.5.3 注意事项注意事项1. 变量须变量须 “先定义,后使用先定义,后使用”;2. 可用可用sizeof计算类型或变量所占内存的字节数。计算类型或变量所占内存的字节数。 sizeof(类型名)(类型名) sizeof 变量名变量名 例例2.3 e2_3.c3. 字符变量存放的是字符的字符变量存放的是字符的ascii码,因此码,因此255范围内的范围内的字符数据可以和整型数据通用字符数据可以和整型数据通用 例例: a+1 c-a 例例2.4

14、 e2_4.c 例例2.5 e2_5.c222.6 运算符和表达式运算符和表达式 程序的核心程序的核心处理处理输入输入输出输出23 1.1.运算符的优先级运算符的优先级 运算符的优先级是指不同的运算符在表达式中进行运算符的优先级是指不同的运算符在表达式中进行运算的运算的先后次序先后次序。 例:例: a+ba+b* *c c 2.2.运算符的结合性运算符的结合性 当一个运算对象的两侧的运算符的优先级相同时,当一个运算对象的两侧的运算符的优先级相同时,运算的运算的结合方向结合方向称为结合性。称为结合性。 自左向右:自左向右: + +、- -、* *、/ / 自右向左:自右向左:2.6.1 运算符的

15、优先级和结合性运算符的优先级和结合性24基本算术运算符有:基本算术运算符有: + - + - * * / / %: %: 求余求余 9%4 11%39%4 11%3说明:说明: (1 1)两个两个整型数据相除整型数据相除依然得依然得整型数据整型数据; 例:例:5/3=1 2/3=0 (1/3)+(1/3)+(1/3) (2 2)求余运算只适用于整型数据,运算结果的符号与)求余运算只适用于整型数据,运算结果的符号与被被除数除数的符号相同。的符号相同。 例:例: 13%-7 613%-7 6 -13%7 -6 -13%7 -6 (3) (3) 优先级:优先级: (4 4)结合性:自左至右)结合性:

16、自左至右2.6.2 算术运算符及算术表达式算术运算符及算术表达式25例:例:aacbb242函数名函数名功功 能能函数名函数名功功 能能sqrt(x)计算计算x的平方根,的平方根,x应大于等应大于等于于0 exp(x)计算计算ex的值的值fabs(x)计算计算x的绝对值的绝对值pow(x,y)计算计算xy的值的值log(x)计算计算lnx的值的值sin(x)计算计算sinx的值,的值,x为弧度为弧度值值log10(x)计算计算lgx的值的值cos(x)计算计算cosx的值,的值,x为弧为弧度值度值26c c语言中的关系运算符共有六种,它们是:语言中的关系运算符共有六种,它们是: = b x=(

17、y+z) m!=n p = = q说明:说明: (1)关系运算结果有两个:)关系运算结果有两个: “真真” - 1 “假假” - 0 例:例:int x =10,y=5; xj 4kj+k282.6.4 逻辑运算逻辑运算在在c语言中,逻辑常量只有两种:语言中,逻辑常量只有两种:值非零表示值非零表示“真真”,值为,值为零表示零表示“假假”。其基本的逻辑运算符有以下。其基本的逻辑运算符有以下3个:个: & (逻辑与)(逻辑与) 两个量都为真时为真(两个量都为真时为真(1),否则为假),否则为假(0) | | (逻辑或)(逻辑或) 两个量中只要有一个为真时为真(两个量中只要有一个为真时为真(

18、1),只有都为假时为假(),只有都为假时为假(0) ! (逻辑非)(逻辑非) 一个量为真时为假(一个量为真时为假(0),假时为真),假时为真(1) 29“与与”运算规则运算规则 0&0 = = 0 0&非零非零= =0 非零非零&0= =0 非零非零&非零非零= =1“或或”运算规则运算规则 0 | 0= =0 0 |非零非零= =1 非零非零| 0= =1 非零非零|非零非零= =1 “非非”运算规则运算规则 !0 = = 1 !非零!非零= = 0例:例: int i=5,j=0; float k=3.6; i&j k|j30 (1 1) c语言对逻

19、辑表达式求解,并不是所有的运算语言对逻辑表达式求解,并不是所有的运算符都被执行,只是在必须执行后面的运算符才能求出符都被执行,只是在必须执行后面的运算符才能求出表达式时,才执行其后的运算表达式时,才执行其后的运算,否则将不执行后面的运否则将不执行后面的运算。算。 例:例: int a=1,b=2,c=3,d=4; int m=1,n=1; (m=ab)&(n=cd) (2) 优先级:!优先级:! & | (3) 结合性:结合性: & | 自左向右自左向右 ! 自右向左自右向左 说明说明:31例:写出判断某一年例:写出判断某一年year是否是闰年的逻辑表达式是否是闰年的逻

20、辑表达式 闰年的条件闰年的条件 (1)能被)能被4整除,但不能被整除,但不能被100整除整除 或或 (2)能被)能被400整除整除 (year % 4 = = 0&year % 100 != 0)| year % 400 = = 032 2.6.5 赋值运算赋值运算功能:功能: 将表达式的值传递给变量将表达式的值传递给变量赋值运算符:赋值运算符: “”。赋值表达式为:赋值表达式为: 变量名表达式变量名表达式例:例: int x,y; x=10; y=x+5;说明:说明:(1)在)在c语言中,语言中,“”为赋值运算符,而不是为赋值运算符,而不是“等号等号”;(2)赋值运算符)赋值运算符“

21、”左边左边必须是变量名必须是变量名,不能是表达式,不能是表达式; 例:例: x+y=5;33 (3)赋值运算符赋值运算符“”两端的类型不一致时,系统将两端的类型不一致时,系统将表达式的类型自动转换为左侧变量的类型表达式的类型自动转换为左侧变量的类型。 例:例:int k; k=3.5; (4)(4)赋值表达式有值,可以进一步参与运算赋值表达式有值,可以进一步参与运算 例:例: i = 4+(j = 7) i = (j = 3)+(k = 8) (5)结合性结合性: :自右至左自右至左 ,当连续有多个赋值运算时,是从当连续有多个赋值运算时,是从右至左逐个赋值右至左逐个赋值 . 例:例: x=y=

22、5; int x; double y; y=x=3.14;34c语言允许在赋值运算符之前加上其它运算符,构成语言允许在赋值运算符之前加上其它运算符,构成复合复合赋值运算符赋值运算符 例:例: a=a+10 a+=10 x=x*(y+1) x*=y+1 常用复合赋值运算符常用复合赋值运算符 += -= *= /= %= 例:例: int a=1,b=2; a += a -= b + 2; 352.6.6 自增、自减运算自增、自减运算 “+” 增增1运算符运算符 “-” 减减1运算符运算符 运算对象只能是运算对象只能是整型整型或或字符型变量字符型变量 运算符可在运算对象运算符可在运算对象前面前面:

23、 +n;-m; 运算符可在运算对象运算符可在运算对象后面后面: n+; m-;36说明:说明: (1)+、- 位于运算对象位于运算对象之前之前: 在使用该运算对象之在使用该运算对象之前使它的值先增前使它的值先增1或减或减1,然后再使用它,即使用的是增,然后再使用它,即使用的是增1或或减减1后的值。后的值。(先自增,再使用先自增,再使用) x=+n; n=n+1; x=n; (2) +、- 位于运算对象位于运算对象之后:之后: 在使用该运算对象之在使用该运算对象之后才使它的值先增后才使它的值先增1或减或减1,即使用的是增,即使用的是增1或减或减1前的值。前的值。(先使用,再自增先使用,再自增)

24、x=n+; x=n; n=n+1;37 #include void main( ) int a, b, c; b=5; c=5; a=+b+c-;printf(%d,%d,%dn, a, b, c); a=(b-)-c;printf(%d,%d,%dn, a, b, c); a=(-b+)+c;printf(%d,%d,%dn, a, b, c); (3)单目运算都是)单目运算都是“右结合右结合”的。的。 例:例: m=-n+;382.6.7 强类型转换符强类型转换符一般形式为:一般形式为: (类型名类型名) 表达式表达式 或或 : (类型名类型名) (表达式表达式) 但:但: 类型名类型名

25、(表达式表达式) 例:例: (int)(x+y) 说明:强类型转换并不改变变量本身的值。说明:强类型转换并不改变变量本身的值。 例:例: e2_7.c392.6.8 位运算位运算&按位与运算按位与运算|按位或运算按位或运算按位异或运算按位异或运算按位右移运算按位右移运算按位求反按位求反对字节或字内的对字节或字内的二进制位二进制位进行运算。经常用于二进制位的进行运算。经常用于二进制位的测试、抽取、设置或移位等操作测试、抽取、设置或移位等操作40说明:说明:(1) 按位按位“与与”:常用于某二进制位:常用于某二进制位“清零清零”(2) 按位按位“或或”:常用于某二进制位:常用于某二进制位“置置1”(3) 按位按位“左移左移”:每左移:每左移1位相当于乘以位相当于乘以2,左移,左移n位相当于乘位相当于乘2n(4)按位)按位“右移右移”:每右移:每右移1位相当于除以位相当于除以2,右移,右移n位位相当于乘相当于乘2n(5)注意逻辑运算与位运算的区别)注意逻辑运算与位运算的区别 例:例: int x=12, y=8; !x, x|y, x&y x, x|y, x&y41一般形式:一般形式: 表达式表达式1 1,

温馨提示

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

评论

0/150

提交评论