c语言概述-第01-04章_第1页
c语言概述-第01-04章_第2页
c语言概述-第01-04章_第3页
c语言概述-第01-04章_第4页
c语言概述-第01-04章_第5页
已阅读5页,还剩58页未读 继续免费阅读

下载本文档

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

文档简介

,第一章,第一章C语言概述,C语言概述,主要内容,1.1语言出现的历史背景1.2程序的特点1.3简单的C语言程序介绍1.4运行程序的步骤和方法,第一章C语言概述,语言的特点,第一章C语言概述,1、语言结构简单,使用方便、灵活,32个关键字2、运算符丰富,共有34种运算符3、数据结构丰富,具有现代语言的各种数据结构4、具有结构化的控制语句,语言的特点,第一章C语言概述,5、语法限制不严格,程序设计自由度大6、C语言允许直接访问物理地址7、生成目标代码质量高,程序执行效率高8、用C语言写的程序可移植性好,第二章,第二章C语言概述,数据类型、运算符与表达式,C的数据类型,第二章C语言概述,整型实型基本类型字符型枚举型数组类型数据类型构造类型结构体共用体指针类型空类型,常量与变量,第一章C语言概述,1、常量:在程序运行过程中其值不能被改变的量符号常量:用一个标识符代表一个常量。#definePRICE30/*习惯大写*/main()intnum,total;num=10;total=num*PRICE;printf(total=%d,total);注意:不能重新赋值好处:1、含义清楚2、一改全改,常量与变量,第一章C语言概述,2、变量:其值可以改变的量条件:1、变量应有一个名字2、在内存中占据一定的存储空间通过变量名找到相应的内存地址,从存储单元中读取数据,常量与变量,第一章C语言概述,标识符:字母、数字和下滑线三种字符组成,且第一个字符必须是字母或下滑线(除32各关键字),用来标识变量名、符号常量名、函数名、数组名等注意:1、区分大小写sum和SUM是两个不同的变量名一般变量名用小写字母表示,符号常量用大写2、标识符的长度,TurboC允许32个字符为了可读性最好不好超过8个,常量与变量,第一章C语言概述,强制定义:在C中所有变量都要先定义后使用目的:1、保证程序中变量名使用正确2、每个变量定义的时候指定一个确定的类型,编译的时候为其分配相应的存储空间3、指定每一个变量的类型,编译的时候检查变量所进行的运算是否合法如a%b,整型数据,第一章C语言概述,1、整型常量:十进制八进制:以0开头的数0123十六进制:以0 x开头的数0 x12,整型数据,第一章C语言概述,2、整型变量:分类:基本型:int,2字节-3276832767短整型:short(int),2字节长整型:long(int),4字节无符号型:存储单元中全部存放数据本身,不包括符号,数据范围扩大一倍。无符号整型:unsignedint065535无符号短整型:unsignedshort无符号长整型:unsignedlong,整型数据,第一章C语言概述,2、整型变量:整型变量的定义:inta,b;unsignedshortc,d,e;#includevoidmain()inta,b,c,d;unsignedintu;a=12;b=-24;u=10;c=a+u;d=b+u;printf(a+u=%d,b+u=%dn,c,d);,整型数据,第一章C语言概述,2、整型变量:整型数据的溢出#includevoidmain()inta,b;a=32767;b=a+1;printf(“%d,%d”,a,b);,运行结果:32767-32768,整型数据,第一章C语言概述,变反加1,溢出操作是将该数减去整形数据类型的模65536,整型数据,第一章C语言概述,(4)整型常量的类型1、一个整型常量其值在-215-215-1范围之内,认为int型,可赋值给intlongint2、一个整型常量其值在-231-231-1范围之内,认为long型,可赋值给longint3、如short和int型数据在内存中占用相同长度,则short和int表示的数据范围相同4、在一个整型常量后面加u,则认为unsigned型常量如:1234u5、在一个整型常量后面加L或l,则认为是longint型常量。如:123L,实型数据,第一章C语言概述,1、实型常量:又称浮点数两种表示形式:十进制数形式:由数字和小数点组成0.123、12.0指数形式:如:123E3、123e3等注意:E、e前面必须有数字,且E后面必须是整数。规范化形式:e、E前小数部分中小数点前有且只有一位非零数字,实型数据,第一章C语言概述,2、实型变量:单精度float(4个字节)双精度double(8个字节)存放形式:,实型数据,第一章C语言概述,floatx,y;doublee;指定x,y为单精度实数,e为双精度实数误差:#includevoidmain()floata,b;a=123456.789e5;b=a+20;printf(“%f,%f”,a,b);单精度实数提供7为有效数字双精度实数提供15-16为有效数字,字符型数据,第一章C语言概述,一、字符常量:1、字符常量:用单引号括起来的一个字符。a、A是不同的常量2、转义字符:特殊形式的符号常量,以“”开头的字符序列。n:代表一个“换行”符t:跳到下一个输入区,一个输入区占8列b:退格r:回车,不换行,返回本行最左端:反斜杠字符“”:单引号字符ddd:1到3位8进制所代表的字符101Axhh:1到2位16进制所代表的字符x41A,字符型数据,第一章C语言概述,二、字符变量:用来存放字符常量,只能放一个字符,不能存放字符串(若干个字符),在内存中占一个字节。定义形式:charc1,c2;c1=a;c2=b;,字符型数据,第一章C语言概述,三、字符数据在内存中的存储形式及使用方法:存储形式:将字符常量存放到一个符号变量中,实际上将字符相应的ASCII码放到存储单元中。如:a的ASCII码为97,01100001,字符型数据,第一章C语言概述,三、字符数据在内存中的存储形式及使用方法:使用方法:1、字符型数据与整型数据可以通用2、字符型数据可以以字符形式输出先将存储单元中的ASCII码转换成相应的字符,然后输出也可以以整数形式输出直接将ASCII码作为整数输出3、字符数据可以进行算术运算,相当于对其ASCII码进行算术运算,字符型数据,第一章C语言概述,#includevoidmain()charc1,c2;c1=97;c2=98;printf(“%c,%cn”,c1,c2);printf(“%d,%dn”,c1,c2);运行结果:a,b97,98注意:字符型数据只占一个字节,存储范围0255之间,字符型数据,第一章C语言概述,#includevoidmain()charc1,c2;c1=a;c2=b;c1=c1-32;c2=c1-32;printf(“%c%c”,c1,c2);运行结果:AB,字符型数据,第一章C语言概述,字符数据与整型数据可以互相赋值例如:inti;charc;i=a;c=97;printf(“%c%d”,c,c);printf(“%c%d”,i,i);输出结果:a97a97,字符型数据,第一章C语言概述,四、字符串常量:一对双引号括起来的字符序列例如:“howareyou”,“a”charc;c=a;c=“a”;原因:a是字符常量,而“a”是字符串常量,字符型数据,第三章C语言概述,规定在每一个字符串结尾处加一个“字符串结束标志”0(ASCII码为0,空操作字符,不引起任何控制动作,也不是一个可显示的字符。)a占一个字节“a”占2个字节。CHINA0长度为6个字符,输出时,一个一个字符输出,直到遇到最后的0字符,停止输出。注意:在书写字符串时不要加0,系统自动加。,变量赋初值,第三章C语言概述,1、C规定,可以在定义变量的同时使变量初始化例如:inta=3;a为整型变量,初值为3floatf=3.56;f为实型变量,初值为3.56inta=b=c=5;应改为inta=5,b=5,c=5;或inta,b,c;a=b=c=5;inta,b,c=5;a,b,c为整型变量,c的值为5,变量赋初值,第三章C语言概述,2、初始化不是在编译阶段完成的,而是在程序运行时执行本函数时赋以初值,相当于有一个赋值语句:inta=3;相当于:inta;a=3;inta,b,c=5;相当于:inta,b,c;c=5;,各类数值型数据间的混合运算,第三章C语言概述,整型、实型(单精度、双精度)、字符型数据可以进行混合运算,在进行运算时,不同类型数据要转化成同一类型,然后运算。Doublefloatlongunsignedintshort、char横行向右的箭头表示必定的转换。纵向箭头表示当运算对象为不同类型时转换的方向。,各类数值型数据间的混合运算,第三章C语言概述,例:inti;floatf;doubled;longe;10+a+i*f-d/e10+aa转换成整数97,运算结果为107i*fi,f转换成double107+i*f107转换成doubled/ee转换成double10+a+i*f-d/e结果为double型注意:转换是由系统自动进行的。,算术运算符和算术表达式,第三章C语言概述,一、基本算术运算符+加法运算符减法运算符*乘法运算符/除法运算符说明:两个整数相除结果为整数,5/3=1,舍去余数部分,但除数和被除数中有一个为负值,舍去的方向是不固定的,-5/3=-1或-2,多数机器采取“向零取整”方法,即-5/3=-11/3=01.0/3=0.333333%模运算符或求余运算符要求两侧均为整型数据7%4=3,算术运算符和算术表达式,第三章C语言概述,二、算术表达式和运算符的优先级与结合性算术表达式:用算术运算符和括号将操作数连接起来优先级:在表达式求值时,先按运算符的优先级高低次序执行*、/、%+、-算术运算符的结合方向为“自左至右”既先左后右,左结合性,算术运算符和算术表达式,第三章C语言概述,三、利用强制类型转换运算符将表达式转换成所需类型方法:(类型名)(表达式)(double)a将a转换成double型不要写成double(a)(int)(x+y)将x+y的值转换成整型强制类型转换时,得到一个所需类型的中间变量,原来变量的类型未发生变化。,算术运算符和算术表达式,第三章C语言概述,#includevoidmain()floatx;inti;x=3.6;i=(int)x;printf(“x=%f,i=%d”,x,i);运行结果:x=3.6,i=3,算术运算符和算术表达式,第三章C语言概述,四、自增、自减运算符i+,i在使用i之后,先使i的值加(减)1+i,i在使用i之前,先使i的值加(减)1i=3;j=+i;(j的值为4,i的值是4)j=i+;(j的值为3,然后i变为4),算术运算符和算术表达式,第三章C语言概述,四、自增、自减运算符注意:1、自增运算符(+)、自减运算符(),只能用于变量,不能用于常量或表达式5+,(a+b)+都是不合法的2、+和的结合方向是“自右至左”i+相当于(i+)i=3;printf(“%d”,i+)输出结果是:-3,算术运算符和算术表达式,第三章C语言概述,五、有关表达式使用中的问题说明1、在表达式中包含自增或自减运算时,很容易出错i=3;k=i+i+i+k=9i=6k=+i+i+ik=18i=62、运算符由两个字符组成时,结合性尽可能多地自左向右i+j相当于(i+)+j3、调用函数时,实参的求值顺序i=3;printf(“%d,%d”,i,i+);有的系统从左向右求值,输出3,3有的系统从右向左求值,输出4,3多数采用此方法,赋值运算符和赋值表达式,第三章C语言概述,一、赋值运算符“=”是赋值符号作用是将一个数据赋给一个变量。a=3是一个赋值表达式,将常量3赋值给变量aa=3+5是将一个表达式的值赋值给一个变量二、类型转换如果赋值运算符两侧类型不一致,且都是数值型或字符型,在赋值时要进行类型转换1、floatdoubleint实型数据赋值给整型变量时,舍弃实数的小数部分。inti;i=3.45;printf(“i=%d”,i);结果:i=3,赋值运算符和赋值表达式,第三章C语言概述,2、intfloatdouble整型数据赋值给实型变量时,数值不变。floatf;f=23;先将23转换成23.00000,7位,再存放到变量中doubled;d=23;先将23转换成23.0000000000000,16位,再存放到变量中,赋值运算符和赋值表达式,第三章C语言概述,3、charint由于整型变量占2个字节,字符占1个字节,因此将字符数据放到整型变量低8位中,有两种情况:(1)、高8位补零。(2)、高8位进行符号扩展,赋值运算符和赋值表达式,第三章C语言概述,4、doublefloatdoublefloat:截取前7位floatdouble:数值不变,有效位扩充到16位5、intlong:符号位扩充longint:截取低16位6、intshortlongchar:截取低8位7、unsignedintlongint:只需将高位补零8、signedunsigned:原样赋值,赋值运算符和赋值表达式,第三章C语言概述,三、复合的赋值运算符在赋值符“=”之前加上其他运算符就可以构成复合运算符a+=3相当于:a=a+3x*=y+8相当于:x=x*(y+8)作用:简化程序,提高编译效率。,赋值运算符和赋值表达式,第三章C语言概述,四、赋值表达式形式:作用:将赋值运算符右侧的“表达式”的值赋值给左边的变量.a=b=c=3表达式值为3,a,b,c值均为3a=(b=10)/(c=2)表达式的值为5,a=5,b=10,c=2a=12;a+=a-=a*a最后a=-264,逗号运算符和逗号表达式,第三章C语言概述,逗号运算符:,例如:3+5,4+9形式:表达式1,表达式2,表达式n求解过程:先求表达式1,再求表达式2,整个逗号表达式的值是最后一个表达式的值。a=3*5

温馨提示

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

评论

0/150

提交评论