




已阅读5页,还剩14页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
2.1 C语言的语法基础2.2 C语言的基本数据类型2.3 常量和变量2.4 运算符与表达式2.5 数据类型转换第二章 C语言的基本数据类型与表达式2.1 语言的语法基础(4)特殊符号:通常由12个符号组成,主要用 来表示运算符。2.1.1、C语言字符集C语言的基本符号可分4个类,归纳如下:(1)英文字母:大小写各26个,共计52个;(2)阿拉伯数:0、1、2、3、4、5、6、7、8、9 共10个数字;(3)下划线:_;第二章 2.1 C语言数据类型 例如:算术运算符:+ - * / % + -关系运算符: = 条件运算符: ?: 和赋值运算符:= 其他分隔符: ( ) . , ;2.1.2 标识符(*)概念:就是用来标识变量名、符号常量名、函数名、类型名、文件名等的有效字符序列。(1)标识符只能由字母、数字和下划线三种字符组成,且第一个字符必须为字母或下划线。 定义规则:如:_1 year month student_name sum0 M.D.Jones $123 #a 3b ?c a=b(2)在C语言中,大小写字母不等效。因此,a和A,I和i,Sum和sum,分别是两个不同的标识符。(3)用户自定义的标识符不能与保留字(关键字)同名。保留字2.1.3 关键字概念:就是具有特定含义的标识符,用户不能用来作自定义标识符。C语言中的关键字较少,由ANSI标准推荐的关键字有32个。(1)与数据类型有关的(14):char int float double signed unsigned short long void struct union typedef enum sizeof(3) 与程序控制结构有关的(12): do while for if else switch case default goto continue break return(2)与存储类别有关的: auto extern register static 2.2 基本数据类型5整型数据值为5算术运算0.5实型数据值为0.5算术运算原始数据相同的特性同一数据类型数据分类、处理2.2.1 数据类型概述三种表现形式:十进制形式:与数学上的整数表示相同。 例如: 12, -100, 0八进制形式:在数码前加数字0 。例如: 012=1*81+2*80=10(十进制)十六进制形式:在数码前加0X(数字0和字母X,大小写均可)。 例如: 0x12=1*161+2*160=18(十进制)2.2.2 整型 十六进制的数码除了数字0-9外, 还使用英文字母a-f (或A-F)表示10-15。 如:0x1e、0Xabcdef、0x1000 但:0X2defg、0x100t都是错误的。注意事项:八进制的数码范围为0-7; 则:018、091、0A2 都是错误的数据表示方法。2.2.3 实型 二种表现形式:十进制形式:由数字和小数点组成;指数形式:由“十进制小数” + “ e(或E)” + “十进制数整数” 三部分组成。 例如: 3.4 4. .3 例如: 12.5e-6 表示12.510-6十进制小数e(或E)十进制数整数注意事项:小数点不能单独出现; e或E的两边必须有数,且其后面必须为整数; 如:0. = .0 = 0 = 0.0 . 如: 6E0.2 e5 6E 二种表现形式:用单引号括起来的一个字符;用单引号括起来的由反斜杠()引导的转义字符。如:A、 1、? 等。如: n 101 x41在统计字符个数时,只能记为一个字符只能是英文的单引号2.2.3 字符型转义字符表字符形式功能n换行下行开头t 、V横向跳格、b 、r竖向跳格退格、f回车本行开头、8进制数表示的ASCII码对应的字符反斜杠、单引号、双引号ddd换页xhh16进制数表示的ASCII码对应的字符一个字符的多种表示方法:65D(十进制)=41H(十六进制)=101Q(八进制)字符A可以表示为A、x41、101、65、0x41、0101。要避免的错误:例2-1:main( )printf(”abc tde rf tg n);printf(h ti b bjk);/* 注代表空格*/设一个输出区占8列,试分析输出结果。琰茞琰茞ab琰茞c琰茞琰茞琰茞de琰茞琰茞琰茞琰茞琰茞f琰茞ab琰茞c琰茞琰茞gde琰茞琰茞琰茞琰茞琰茞h琰茞琰茞琰茞琰茞琰茞琰茞ji琰茞琰茞琰茞琰茞琰茞琰茞琰茞h琰茞琰茞琰茞琰茞琰茞琰茞j琰茞琰茞琰茞k琰茞琰茞琰茞琰茞1234567812345678main( )printf(”abc tde rf tg n);printf(h ti b bjk);/* 注代表空格*/字符的值域:即字符的取值范围。0-127或0-255ASCII字符表中的所有字符,每个字符型数据在内存中占一个字节,包括可显示字符和非显示字符。2.3 常量与变量2.3.1 常量与符号常量1.直接常量:是在程序中直接引用的数据。分为:整型、实型、字符型、字符串以数据的原形出现!2字符串常量字符串常量在机器内存储时,系统会自动在字符串的未尾加一个“字符串结束标志”,它是转义字符0。该结束标志在内存中占用一个字节,但不记入字符串长度 在C语言中,用一对双引号括起来的零个或多个字符序列称为字符串。例如:”LiMing”、”Hello”。字符串的长度是指该字符串的字符个数,不包括双引号。例如以上两个字符串的长度分别为6和5。3.符号常量:特点:在程序中不能给它赋值。概念:是用标识符来表示一个数据。定义形式:#define 标识符 常量数据例如: #define PI 3.14159在程序预处理时,凡是出现标识符PI的地方都将用数据3.14159来替换。如:2*2.3*PI 就等价于 2*2.3*3.14159。2.3.2 变量变量是指在程序运行中, 其值可以被改变的量。基本概念:变量代表计算机内存中的某一存储空间,该存储空间中存放的数据就是变量的值。在同一程序块中,每个变量都有唯一的名字,不能被重复定义。使用变量时必须“先定义,后使用”。 int a,b,c ; float x,y; char c1,c2; 或 int c1,c2; 自己设定,满足标识符的规定。如:int,float,char;不可省1.定义形式:类型标识符 变量名1 ,变量名2,变量名3,.;例如:2.整型变量(1)整型变量的分类基本型,以int表示。短整型,以short int表示,或以short表示。长整型,以long int表示,或以long表示。无符号型,其中无符号型又分为无符号整型,无符号短整型和无符号长整型,分别以unsigned int unsigned shortunsigned long表示。int x;long y;2000200120022005xy内存内存地址20032004(2)整型常量与变量的匹配 在将一个整型常量赋给一个整型变量时如何进行类型匹配?其值在-32768 - +32767范围内,认为它是 int型,它可以赋值给 int 型和 long int 型变量。其值在-2147483648 - +2147483647范围内,则认为它是long int型,可以将它赋值给一个long int 型变量。.短整型常量:.长整型常量:.如果某一计算机系统的C版本确定的short int 与 int型数据在内存中占据的长度相同,.常量中无unsigned 型.则它的表示范围与int 型相同。因此一个int 型的常量也同时是一个short int型常量,可以赋值给int 型或 short int 型变量。但一个非负值的整常量可以赋值给 unsigned 型整常量,只要它的范围不超过变量的表示范围即可。数据后加一个字母1 或 L,则认为是long int型常量. .长整型常量的表示:例如:123l , 432L, 0L等等。 这往往用于函数调用中,如果函数的形参为long int型,则要求实参也为 long int 型,此时用123作实参不行,而要用123L作实参。main()int x; x =10*9*8*7*6*5*4*3*2*1; printf(%d,x);例2-2,看看下面程序的输出是什么?long int x;%Ld3、实型变量的分类(1)实型变量的分类单精度(float)型双精度(double)型(2)实例2000200320042011xy内存内存地址例如: char c; c= a; c= 034; c= n; c= x65; c=65;c=0101;c=0x41; 4.字符变量字符变量用来存放字符常量,注意一个字符变量只能存放一个字符。一般以一个字节来存放一个字符,或者说一个字符变量在内存中占一个字节。5.变量初始化 在说明变量的同时给变量一个初始值。变量定义分配存储空间变量初始化分配存储空间的同时存入数据int a,b; int a=1,b=2; 不确定例2-3:看一看,下列的定义哪些是正确的?int a=5, b=3;int a=b=c=3; int a,b,c; a=b=c=3;先定义后使用,理解为赋值a=b,b=c.等例2-4: #define PI 3.14159main( ) float s, r; scanf(%f, &r); /* 输入数据给变量r(半径) */ s = r * r * PI; /* 计算第一个圆的面积,存入变量s */ printf(s=%6.2fn, s); /* 输出变量s 的值(面积) */ scanf(%f,&r); /* 输入第二数据给变量r(半径) */ s = r * r * PI; /* 计算第二个圆的面积,存入变量s */ printf(s=%8.4f, s); /* 输出变量s 的值(面积) */ 1 s= 3.14 (共输出6个字符且有2位小数) 2 s= 12.5664 (共输出8个字符且有4位小数)运行结果小 结1、数据类型的引入及意义2、符号常量的定义形式和引入符号常量的意义3、变量的定义、赋值、初始化2.4 运算符与表达式运算符的分类 分类依据:运算符的功能分类:算术运算符关系运算符逻辑运算符赋值运算符按位运算符其它运算符参见附录2(3 9 7 页):运算符的优先级和结合方向一览表表达式:是由操作数和运算符组成的序列。一、算术运算符和算术表达式1、算术运算符+:加法-:减法*:乘法/:除法%:取余或模3+51+1+33-51-1-33*5aba.b3/5=03./5=0.63/5.=0.63%5=3a%b=a-n*b a、b必须为整数5%(-3)=5-(-1)*(-3)=2(-12)%(-5)=(-12)-2*(-5)=-22、算术表达式用算术运算符和括符将操作数连接起来的式子。优先级:( )* / %+ -结合性自左向右,与数学上一致。表达式的值:数值型:int、long、unsigned、double结合性是指同级运算时运算符的结合方向。如a#b#c (#代表某一运算符)若先运算a#b,再将其结果与c运算,称为左结合性;从左至右运算规则若先运算b#c,再将a与其结果运算,则称右结合性。从右至左运算规则例2-5:已知: float a=2.0; int b =6,c =3;求解: a*b/c-1.5+ A +abs(-5)=?12.0/34.0 - 1.52.5+65(int)67.5572.53.自增与自减运算符 (重点和难点)+i,-i先增(减)1,再使用ii+,i-先使用i,再增(减)1(1) 单独使用时+i;等 价i+;等 价i=i+1;(2) j=+i;(3) j=i+;若i的初始值为3i=4;j=4;i=4;j=3;结合性:自右向左例:i = 2; j = -i+;分析:(1)+、-、+(正号)、-(取负)是同级运算符,结合方向:自右向左。(2) -i+等价于-(i+)(3) 对于括号内的自增运算,又要先使用i,再使i增加1。运算结果: i的值为3,j的值为-2。二、关系运算符和关系表达式关系运算:比较运算,比较两个操作数,看是否满足给定的关系。1、关系运算符:小于 ,53, 35=:小于等于,5=3,3:大于,53,35=:大于等于,5 =3,3 =5 ,与数学上()不同=:等于,5= =3 ,与数学上(=)不同!=:不等于,5!=3 ,与数学上()不同2、关系表达式用关系运算符将表达式连接起来的式子优先级 =高 低= !=结合方向自左向右表达式的值关系成立,即为真,结果为1;关系不成立,即为假,结果为0;算术运算符高 低C语言中,真:非0值,假:0值 三、逻辑运算符和逻辑表达式1、逻辑运算符!:逻辑非,一元运算符运算规则:取反,真假,假真&:逻辑与 。又称逻辑乘。运算规则:两个操作数均为真,结果为真。|:逻辑或 。又称逻辑加。运算规则:只要两个操作数有一个为真,结果为真。2、逻辑量或逻辑表达式的值非0 值:真0值:假整型实型字符型指针类型00.00NULL3、逻辑表达式用逻辑运算符将表达式连接起来的式子。优先级关系运算符高 低&逻辑与算术运算符高 低!逻辑非高 低高 低|逻辑或结合性!:自右向左&、|:自左向右例2-6:int a=5; float b=3.5;!a0!b0a&b1a|b1!a&!b 04、注意在逻辑表达式的求解中,并不是所有的逻辑运算符都被执行,只是在必须执行下一个逻辑运算符才能求出表达式的解时,才执行该运算符。例2-7:a=0; b=1; c=2; d=a+&b+&- -c;d=(a+)&(b+)&(- -c);运算结果: d=0,a=1,b=1,c=2(1)a & b & c求解方法:只有a为真(非0),才需要判断b的值,只有a和b都为真,才需要判断c的值。只要a为假,就不必判断b和c,运算立即中止。b,c都没算(2)a | b | c求解方法:只要a为真(非0),就不必判断b和c;只有a 为假,才判断b;a和b都为假,才判断c。例2-8:a=0; b=0; c=2; d=a+|b+|- -c; d=(a+)|(b+)|(- -c); 运算结果: d=1,a=1,b=1,c=1 如a=1,运算结果: d=1,a=1,b=0,c=2 思考题:判断一个数n是否为奇数或偶数?判断一个字母c是否是英文字符?判断一个年份是否为闰年?判断一个数n是否被数k整除?判断三个数是否组成一个三角形?判断三个数是否组成一个等腰三角形?四、赋值运算符和赋值表达式1、赋值运算符= (数学上的等号)功能:将一个表达式的值赋给一个变量。2、赋值表达式用赋值运算符将变量和表达式连接起来的式子形式: =求值规则: 将“=”右边表达式的值赋给左边的变量。结合性:自右至左 例2-9:(1) x=(y=12)/4y值为12,x值为3,表达式的值为3(2) x=y=12/4y值为3,x值为3,表达式的值为3 (3) x=(y=12/4)(y值为3,x值为3,表达式的值为3 (4) (x=y)=12/4X该赋值运算符左边不是变量,而是一个表达式3、复合赋值运算符*=、/=、%=、+=、-=、=、&=、=、=共10个由赋值运算符与算术、位移、位逻辑运算符组成。复合运算符是一个运算符,但功能上,是两个运算符功能的组合。例2-10:a+=b 相当于 a=a+ba*=b+c 相当于 a=a*(b+c)a=2; a+=a*=a;五、条件运算符与条件表达式有两个符号:?、:,它与三个操作数组成三元运算。一般形式: ? :求值规则和表达式的值:求解表达式1真(非0)求解表达式2假(0)求解表达式3表达式的值优先级:逻辑 条件 赋值结合性: 自右至左例2-11: int max,a=5,b=3; max=ab?a:b-a=b+ ? a+ : b+ y = x10 ? x/10 : x0 ? x: -x;表达式2,或3只算一个形式:逗号表达式1,逗号表达式2,逗号表达式n 求值规则:从左至右依次计算各表达式的值优先级最低 结合性:自左至右 表达式的值最后一个表达式的值。六、逗号运算符与逗号表达式例2-12:a b y 逗号表达式 y=a=4,b=5,a+b; 4 5 4 9 y=(a=4,b=5,a+b); 4 5 9 9 y=(a=4,b=5),a+b; 4 5 5 9 y=a=(4,b=5),a+b; 5 5 5 10注意:C语言常用逗号作为分隔符, 例如: int a=3,b=4,c=5; printf(“%d,%d,%d”,(a,b,c); 5,?,? printf(%d,%d,%d,a,(a,b,c),c); 3,5,5 七、位运算符1.数的补码表示计算机内部的数据和C语言的数据都是以补码表示的。补码的最高位为符号位,若为0,该数为正数;若为1,该数为负数。符号位与数值位一起参与运算。 正数的补码即其本身。负数的补码可这样求出:(1)先求该数的绝对值,再求出对应正数的二进制编码;(2)对二进制编码按位取反;(3)对最低位加1。求-2的补码(以两个字节表示) (1)求-2的绝对值,|-2|=2, 二进制编码为:0000 0000 0000 0010(2)按位取反得:1111 1111 1111 1101(3)最低位加1: 1111 1111 1111 110111111 1111 1111 11102位运算符 位运算符主要有:&、|、。 除“”以外,均为二元运算符,且操作数只能是整型或字符型数据,不能为实型数据。 (1)按位与运算符:& 参与运算的两个操作数,若对应的两个二进制位都是1,则结果对应的二进制位为1,否则为0。例:求5&7的值。运算过程为: 0000 0000 0000 0101(5的补码) &0000 0000 0000 0111(7的补码)0000 0000 0000 0101(5的补码,即5&7=5)(2)按位或运算符:参与运算的两个操作数,若对应的两个二进制位有一个为1,则结果对应的二进制位为1,否则为0。 运算过程为:0000 0000 0000 0101(5的补码)0000 0000 0000 0111(7的补码)0000 0000 0000 0111(7的补码,即57=7 例 求5 7的值。(3)按位异或运算符:参与运算的两个操作数,若对应的两个二进制位相异,则结果对应的二进制位为1,否则为0。求57的值 0000 0000 0000 0101(5的补码) 0000 0000 0000 0111(7的补码)0000 0000 0000 0010(2的补码,即57=2)(4)按位取反运算符:运算符的优先级较高,结合方向与其它位运算符不同,为自右向左的方向。 求5的值。运算过程为: 0000 0000 0000 0101(5的补码)1111 1111 1111 1010(-6的补码,即5=-6) (5)左移运算符:运算符的功能是将一个操作数的各个二进制位依次左移若干位。一般形式为:操作数 移位位数求52的值。 0000 0000 0000 0101(5的补码)左移1位得:00000 0000 0000 1010(20的补码,即52=20) 再左移一位得:00000 0000 0000 1010(10的补码,即5运算符的功能是将一个操作数的各个二进制位依次右移若干位。一般形式为:操作数 移位位数若操作数为无符号数或正数,移出的低位被舍弃,高位补0。这种移位操作又称逻辑右移。求102的值 0000 0000 0000 1010(10的补码)右移1位得:0000 0000 0000 01010(5的补码,即101=5)再右移1位得0000 0000 0000 00101 (2的补码,即51=2)若操作数为有符号数的负数,即最高位为1时,右移时高位补1,以保持符号位不变,低位移出并舍弃。这种移位操作又称算术右移。求-101的值 1111 1111 1111 0110(-10的补码)右移1位得:1111 1111 1111 10110(-5的补码)右移1位得 八.其它运算符形式:sizeof 变量名sizeof (类型名)功能:求得变量或某种数据类型所需的字节数。运算结果:整型数例2-13:int a;float x;sizeof a,sizeof x,sizeof(int),sizeof(float) 1求字节运算符:sizeof sizeof 变量名或sizeof(变量名)或sizeof(类型名)2取地址运算符:&作用:求某个变量的内存地址。运算符“&”主要有三个方面的应用:一是标准输入函数scanf中获得要输入数据的变量的地址;二是取
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年矿山智能化开采无人作业技术智能化设备市场细分领域分析报告
- 环境灾害应急法律法规培训法规重点基础知识点归纳
- 真功夫快餐的在外经营模式探索
- 炸鸡店的行业调研与竞争分析
- 绿色施工人才培养与发展策略
- 客服人员负面情绪过滤技巧
- 国潮风的春节舞会
- 彩妆选择 如何选择适合自己的彩妆产品与技术
- 儿童与老年人护理的特殊考虑因素
- 保险公司猜灯谜活动方案
- 混凝土抗渗检测报告
- 尾矿治理工程施工方案
- 社会主义发展简史智慧树知到课后章节答案2023年下北方工业大学
- 药品追溯管理制度
- 2023年1月福建省普通高中学业水平合格性考试通用技术+答案
- 超微细粉体与复合化技术之一(粉体与粉体加工技术)
- Unit 1 A New Start School clubs Making a plan课件 -2023-2024学年高中英语外研版(2019)必修第一册
- (完整版)土的参数换算(计算饱和重度)
- 第一讲 马克思主义中国化时代化新的飞跃PPT习概论2023优化版教学课件
- 2023届四川省乐山市市中区四年级数学第二学期期末考试试题含解析
- 国开2023春《语言学概论》形考任务1-3+大作业参考答案
评论
0/150
提交评论