资源描述
1,第2章C语言的语法基础,2.1基本数据类型,2,2.1基本数据类型,标识符数据类型常量变量数据存储,3,1.标识符,对常量、变量、类型、语句、标号和函数进行命名,长度不限制。标识符的种类:关键字预定义标识符用户定义标识符,4,关键字,C语言关键字(保留字),根据关键字的作用,可分其为数据类型关键字、控制语句关键字、存储类型关键字和其它关键字四类,这些关键字都要采用小写字母。数据类型关键字(12个):char,double,enum,float,int,long,short,signed,struct,union,unsigned,void控制语句关键字(12个):break,case,continue,default,do,else,for,goto,if,return,switch,while存储类型关键字(4个):auto,extern,register,static其它关键字(4个):const,sizeof,typedef,volatile,5,预定义标识符,C语言系统提供的库函数名和编译预处理命令等构成了预定义标识符。使用库函数包含,就把相应的预定义标识符定义在程序中;如库文件“stdio.h”中的一部分:void_Cdeclclearerr(FILE*stream);int_Cdeclfclose(FILE*stream);int_Cdeclfflush(FILE*stream);int_Cdeclfgetc(FILE*stream);int_Cdeclfgetpos(FILE*stream,fpos_t*pos);char*_Cdeclfgets(char*s,intn,FILE*stream);如果程序中没有相应的库文件包含,用户可以定义与系统预定义标识符名称一样的标示符,但应该避免这样做。,6,用户定义标识符,用户标识符:在TurboC2.0中,用户标示符必须满足的规则:由大小写英文字母、下划线、数字组成;由英文字母或下划线开头;长度不能超过32个字符,在TC中,只取前8个字符作为有效字符;大小写字母有区别;不能使用TurboC2.0的关键字。注意事项:不能出现全角字符、空格,不要把下划线“_”写成减号“-”;标识符必须定义后才能使用;最好做到见名知义,以增加程序的可读性并且方便维护;,7,数据类型,在tc中数据类型可分为基本数据类型、构造型数据类型、指针型数据类型基本数据类型分为:字符型char,整型int,单精度实型float,双精度实型double,空类型void,前四种可以加修饰符如sign(有符号),unsign;long,short等修饰符sign,unsign,short仅适用于修饰字符和整型,long还可修饰实型(double)缺省时都字符和整型是带有符号的空类型void通常在调用函数时,就向调用者返回一个有特定类型的函数值。,8,9,常量,常量的概念在程序运行过程中,其值不能被改变的量称为常量。常量的分类整型常量实型常量字符型常量字符串常量符号常量,10,补充:整数在机内的表示形式,计算机中数采用二进制表示,符号也用二进制表示,最高位为符号位。在补码表示法中,正数采用符号-绝对值表示法0表示符号位(正)其余用数的绝对值表示。+1补=0000000000000001+32767补=01111111111111110补=0000000000000000负数用2n-|x|来表示,其中n为机器的字长,当n=16时-1补=216-1=1111111111111111(16个1)-32767补=216-32767=1000000000000001(14个0)-0补=0000000000000000(规定)对于1000000000000000定义为-32768,11,整型常量整数,十进制整数:由数字19开头,09数字组成,前面可加正负号。八进制整数:由数字0开头,07数字组成,前面可加正负号。十六进制整数:由数字0和字母x(大小写均可)开头,由数字09,字母af(大小写均可)组成,前面可加正负号。【注意事项】:在一个整型常量的尾部加上字母l(或L)时,则为长整型常量;一个整型常量的值可以确定它的类型,值在范围内则为整型(int)常量;值超过上述范围而在范围内,则为长整型;,12,实型常量实数,C语言中实型常量有两种表示方法:小数形式:包括数字和小数点,如1.2352、-0.216、+536.1;指数记数法形式:包括整数部分、小数点、小数部分和指数部分,指数部分前加字母e(或E),如1.235e3、1.235e03、0.123e+5、2.26e-5;用指数形式表示实数时,指数部分必须为整数,字母e前面必须有数字;整数部分和小数部分可省略其中任一个,如.23和200都是正确的使用E或e时,上述两边都要有数,如E2,2.4E都是错误的实型常量默认都是double,可加f(F)成为float,如12.3F;后加字母l(或L),则构成长双精度实型常量longdouble,13,字符常量,C语言字符常量有三种表示方法:把单个字符用一对单引号括起来表示字符常量,如a、6、+;其值是该字符的ASCII码用该字符的ASCII码值表示的字符常量,见附录D,page406;反斜杠“开头后跟规定的单个字符或数字,并用一对单引号括起来表示字符常量,如r表示回车,n表示换行。这种表示法中反斜杠后面的字符变成了另外的意思,称之为转义字符。,14,程序举例,main()charch1,ch2;ch1=a;ch2=b;printf(“ch1=%c,ch2=%cn”,ch1,ch2);printf(“ch1=%d,ch2=%dn”,ch1,ch2);,程序运行结果:ch1=a,ch2=bch1=97,ch2=98,main()charch1,ch2;ch1=a;ch2=B;/*字母的大小写转换*/printf(“ch1=%c,ch2=%cn”,ch1-32,ch2+32);/*用字符形式输出一个大于256的数值*/printf(ch1+200=%dn,ch1+200);printf(ch1+200=%cn,ch1+200);printf(ch1+256=%dn,ch1+256);printf(ch1+256=%cn,ch1+256);,程序运行结果:ch1=A,ch2=bch1+200=297ch1+200=)ch1+256=353ch1+256=a,15,字符串常量,若干个字符用双引号括起来就构成了字符串常量,如“hello!”,“a”,“123”C语言中在存储字符串常量时,除了存储双引号中的所有字符外,在字符串的最后还要存放一个字符”0”,表示该字符串常量到此结束,字符”0”也称为字符串的结束标志。它也占用一个字节。字符串中字符的个数称为字符串长度。长度为0的字符串(即一个字符都没有的字符串)称为空串,表示为“”(一对紧连的双引号),16,举例说明,“Howdoyoudo.”长度分别为14(空格也是一个字符)如果反斜杠和双引号作为字符串中的有效字符,则必须使用转义字符:C:msdosv6.22“C:msdosv6.22”Isay:Goodbye!“Isay:”Goodbye!”如果有一个字符串为“CHINA”,则它在内存中的实际存储如下所示:最后一个字符0是系统自动加上的,它占用字节而非字节内存空间。,17,字符串常量和字符常量的区别,字符常量A与字符串常量A是两回事:定界符不同:字符常量使用单引号,而字符串常量使用双引号;长度不同:字符常量的长度固定为1,而字符串常量的长度,可以是0,也可以是某个整数;存储要求不同:字符常量存储的是字符的ASCII码值,而字符串常量,除了要存储有效的字符外,还要存储一个结束标志0。,18,符号常量,C语言中可以用一个标识符来代表一个常量,称为符号常量,有两种定义方式:利用宏定义#define来定义符号常量:如#definePI3.14159;#defineAB34;(则PI和AB是符号常量)利用const来定义符号常量,此方法在定义符号常量的同时也定义了该常量的数据类型格式为:const数据类型符号常量1常量1,符号常量2常量2,如constintMAX=5000;,19,以下是等级考试中的填空题,下面叙述正确的是()2/3与2.0/3.0等价(int)2.0/3与2/3等价+5与6是等价A与”A”是等价C语言用户标识符的描述,正确的是()。不区分大小写用户标识符不能描述常量类型名也是用户标识符用户标识符可以作为变量名,以下()是正确的常量。E-51E5.1a1232766L在c语言中,合法的字符常量是()。字AABCx41,20,变量,概念在程序执行过程中,值可以改变的量称为变量。变量的两个要素变量名:每个变量都必须有一个名字变量名,变量命名遵循标识符命名规则。变量的值:在程序运行过程中,一个变量在内存中占有一定的存储空间,里面存放的数据就是变量的值。通过变量名可以引用变量的值。,21,变量的定义与初始化在语言中,要求对所有用到的变量,必须先定义、后使用;在定义变量的同时进行赋初值的操作为变量初始化。变量定义的一般格式数据类型变量名,变量名2;例如,floatradius,length,area;变量初始化的一般格式数据类型变量名=初值,变量名2=初值2;例如,floatradius=2.5,length,area;,22,整型数据的取值范围和占内存字节数,23,实型数据的取值范围和占内存字节数,实型常量不分float型和double型,变量则分为float和double两种,24,字符型数据的取值范围和占内存字节数,25,字符类型变量,chara,b=b;每个字符类型变量被分配一个字节(即8位),上述式子表示变量a的值未被定义,变量b的值是98(ASCII)注意char的值是一个带符号的值。,#includemain()charchA,chB,cha=a,chb=98;chA=cha-32;chB=chb-32;printf(cha=%c,cha=%d;cha,cha);printf(chb=%c,chb=%d;chb,chb);printf(chA=%c,chA=%d;chA,chA);printf(chB=%c,chB=%d;chB,chB);,26,用const修饰变量,用const修饰后,变量的值一旦被确定,就不能被更改intconstivarconstintivarIvar被定义为其值不可更改的量(相当于常量)同时赋值intconstivar=10或在函数中定义,27,枚举类型变量,系统允许用户自定义的类型取名,如枚举类型因为有些变量的取值在一定的范围内,通过枚举所有可能的值来定义一个有序的值集定义格式:enum枚举类型名标识符=整型常量;标识符=整型常量;枚举变量;例:enumcolorRED,BLUE,GREEN;例:enumcolorRED,BLUE,GREEN;mycol1,mycol2;引用格式:上例可以引用这两个枚举变量如对其赋值mycol1=RED,mycol2=BLUE;,28,说明:1)枚举类型变量是以整型的方式存储的,如果枚举定义初始化时省略”=整型常数”则从第一个标识符起值为0,1,22)可以为某些指定一些数值,其后标识为依次加1enumcolorRED,BLUE=200,GREEN,BLOCK=400;GREEN被自动赋值为2013)下列是错误的enumcolor“RED”,”BLUE”,”GREEN”;/*因是字符串*/enumcolor1,2,3;/*因是数字*/enumcolorfor,do,mod;/*因是保留字*/,枚举类型变量,29,以下是等级考试中的试题,C语言用户标识符的描述,正确的是()。不区分大小写用户标识符不能描述常量类型名也是用户标识符用户标识符可以作为变量名关于C语言数据类型的叙述,正确的是()。枚举类型不是基本类型数组不是构造类型变量必须先定义后使用不允许使用空类型,以下()是正确的变量名。5f(b)if(c)f.5_f5以下()是正确的变量名。a.bee-p11intp_11,30,数据存储,内存的概念计算机内存是由一片连续的存储单元组成,每个单元有相应的编号,称为内存单元的地址(简称地址)。地址通常由一组连续的整数组成,编号小的称内存低地址,编号大的称内存高地址。每个单元占1个字节(byte),因此每个字节都有相应的编号。,31,例如:设程序中有以下定义变量的语句inti=25,j=0 x1af,k=-25;longints=-25;,
展开阅读全文