C语言编程基础目标:1了解C语言的语法基础2掌握常量和变量3掌握C语言的基本数据类型4简单了解运算符和表达式第三章C语言的基本数据类型C语言编程基础C语言的语法基础(4)特殊符号:通常由1~2个符号组成,主要用来表示运算符。1C语言字符集字符是C语言程序的最小元素,基本符号如下:(1)英文字母:大小写各26个,共计52个;(2)阿拉伯数:0、1、2、3、4、5、6、7、8、9共10个数字;(3)下划线:_;第五讲字符集C语言编程基础2标识符--(名字)概念:就是用来标识变量名、符号常量名、函数名、类型名、文件名等的有效字符序列。(1)标识符只能由字母、数字和下划线三种字符组成,且第一个字符必须为字母或下划线。定义规则:*判断下列表示符的对错:_1yearmonthstudent_namesum0M.D.Jones$123#a3b?ca=bC语言编程基础(2)在C语言中,大小写字母不等效。因此,a和A,I和i,Sum和sum,分别是两个不同的标识符。(4)用户自定义的标识符不能与保留字(关键字)同名。保留字(3)标识符的命名尽量有意义,便于读者理解C语言编程基础3关键字概念:就是具有特定含义的标识符,用户不能用来作自定义标识符。C语言中的关键字较少,由ANSI标准推荐的关键字有32个。常用的有:(1)与数据类型有关的(14):charintfloatdoublesignedunsignedshortlongvoidstructuniontypedefenumsizeofC语言编程基础(3)与程序控制结构有关的(12):dowhileforifelseswitchcasedefaultgotocontinuebreakreturn(2)与存储类别有关的:autoexternregisterstaticC语言编程基础字符型(char)整型(short,int,long,unsigned)基本类型数值类型单精度型(float)实型双精度型(double)枚举类型(enum)数据类型数组类型([])构造类型结构体类型(struct)共用体类型(union)指针类型(*)空类型(void)C语言的数据类型:C语言编程基础常量和变量一、常量概念:在程序运行中,其数值不能被改变的量。分类:直接常量和符号常量1.直接常量:是在程序中直接引用的数据。这类常量可从字面形式直接判断.分为:整型、实型、字符型、字符串以数据的原形出现!C语言编程基础(1)整型常量三种表现形式:十进制形式:与数学上的整数表示相同。例如:12,-100,0八进制形式:在数码前加数字0。例如:012=1*81+2*80=10(十进制)十六进制形式:在数码前加0X(数字0和字母X,大小写均可)。例如:0x12=1*161+2*160=18(十进制)C语言编程基础十六进制的数码除了数字0-9外,还使用英文字母a-f(或A-F)表示10-15。如:0x1e、0Xabcdef、0x1000但:0X2defg、0x100L都是错误的。注意事项:八进制的数码范围为0--7;则:018、091、0A2都是错误的数据表示方法。C语言编程基础(2)实型常量二种表现形式:十进制形式:由数字和小数点组成;指数形式:由“十进制小数”+“e(或E)”+“十进制数整数”三部分组成。例如:3.44..3例如:12.5e-6表示12.5×10-6十进制小数e(或E)十进制数整数C语言编程基础注意事项:小数点不能单独出现;e或E的两边必须有数,且其后面必须为整数;如:0.=.0=0=0.0.如:6E0.2e56E×C语言编程基础(3)字符型常量二种表现形式:用单引号括起来的一个字符;用单引号括起来的由反斜杠(\)引导的转义字符。如:'A'、'1'、'?'等。如:'\n''\101''\x41'在统计字符个数时,只能记为一个字符单引号是英文格式C语言编程基础转义字符表字符形式功能\n换行\t、\V横向跳格、\b、\r坚向跳格退格、\f回车(回到本行开头)\\、\'、\8进制数表示的ASCII码对应的字符反斜杠、单引号、双引号\ddd换页\xhh16进制数表示的ASCII码对应的字符\\、\'、\美国标准信息交换代码ASCII码(AmericanStandardCodeforInformationInterchange)由8位二进制数(十进制0~255)来表示256种可能的字符C语言编程基础一个字符的多种表示方法:65D(十进制)=41H(十六进制)=101Q(八进制)∴字符A可以表示为'A'、'\x41'、'\101'、65、0x41、0101。要避免的错误:表示单引号:'''表示双引号:''表示斜线:'\'×'\''√××'\'√'\\'√C语言编程基础字符的值域:即字符的取值范围。0-127或0-255ASCII字符表中的所有字符,每个字符型数据在内存中占一个字节,包括可显示字符和非显示字符。C语言编程基础例1:main(){printf(”@@ab@c\t@de\rf\tg\n);printf(h\ti\b\bj@@@k);}/*注@代表空格*/设一个输出区占8列,试分析输出结果\。abcdefabcgdehjihjk1234567812345678C语言编程基础(4)字符串常量●字符串常量是一对双引号括起来的字符序列例:“Howdoyoudo!”“hao123”在C语言中没有专门的字符串变量,如果想将一个字符串存放在变量中需要使用字符数组,即用一个字符型数组来存放一个字符串,数组中每一个元素存放一个字符,此内容在后面的章节进行讲解,此处只是作为了解.●注:不要将字符常量与字符串常量混淆。例:‘a’是字符常量,而“a”是字符串常量,二者是不同的。charc;而charc;c=‘a’;c=“a”;不能将一个字符串赋予一个字符变量√×C语言编程基础字符和字符串的区别:*‘a’和“a”究竟有什么区别呢?C规定字符串是以字符‘\0’做为字符串的结束标志,并且此字符占一个字节。这个‘\0’字符是写字符串时系统自动加上的,因此字符串“a”实际上是包含:‘a’和‘\0’这2个字符的。把“a”赋予只能容纳一个字符的字符变量c显然是不行的。例:字符串“CHINA”在内存中不是5个字节,而是6个字节在执行printf(“CHINA”);语句时字符一个一个输出,直到遇到最后的‘\0’就知道字符串结束.CHINA\0‘\0’是一个ASCII码为0的字符,是“空操作字符”,即它不引起任何控制动作,也不是一个可显示的字符.C语言编程基础特点:在程序中不能给它赋值。概念:是用标识符来表示一个数据。定义形式:#define标识符常量数据例如:#definePI3.14159在程序预处理时,凡是出现标识符PI的地方都将用数据3.14159来替换。如:2*2.3*PI就等价于2*2.3*3.14159。2符号常量:C语言编程基础例:#includestdio.h#definePRICE30main(){intnum=10,total;total=num*PRICE;printf(“total=%d”,total);}定义PRICE代表常量30,在函数体中只要出现PRICE均表示30注意:虽然符号常量的命名规则也要符合标识符的规则,但符号常量不同于变量,其值在作用的函数体内是不能改变的,是不能被赋值的.如:在上段程序中若出现语句PRICE=40,是错误的C语言编程基础另:1、习惯上符号常量名用大写字母表示,变量名用小写字母表示2、定义符号常量时,应含义清晰3、符号常量的优点:在#define中改变符号常量的值时,函数体中所对应的符号常量的值跟着改变,即“一改全改”。C语言编程基础二、变量变量是指在程序运行中,其值可以被改变的量。基本概念:变量代表计算机内存中的某一存储空间,该存储空间中存放的数据就是变量的值。在同一程序块中,每个变量都有唯一的名字,不能被重复定义。使用变量时必须“先定义,后使用”。例:inta;a变量名a=3;3变量值存储单元C语言编程基础inta,b,c;floatx,y;charc1,c2;自己设定,满足标识符的规定。如:int,float,char;不可省1.定义形式:类型标识符变量名1[,变量名2,变量名3,...];例如:C语言编程基础(1)整型变量的分类基本型,以int表示。短整型,以shortint表示,或以short表示。长整型,以longint表示,或以long表示。无符号型,其中无符号型又分为无符号整型,无符号短整型和无符号长整型,分别以unsignedint无所谓正负unsignedshortunsignedlong表示在CFree中short占2个字节int占4个字节long占4个字节2.整型变量C语言编程基础intx;longy;2000200120022005xy内存内存地址20032004注意:在不同的系统和不同的编译环境下面一个数据类型所占的内存单元有所差别.C语言编程基础(2)整型常量的类型在将一个整型常量赋给一个整型变量时如何进行类型匹配?其值在-32768-+32767范围内,它可以赋值给shortint型、int型和longint型变量。其值在-2147483648-+2147483647范围内,它赋值给int型和longint型变量。.短整型常量(short,占2个字节):.整型常量(int,占4个字节):赋值时不应超出其范围否则错误C语言编程基础数据后加一个字母1(小写L)或L,则认为是longint型常量.长整型常量的表示:例如:123l,432L,0L等等。其值在-2147483648-+2147483647范围内,则认为它是longint型,可以将它赋值给一个longint型变量。.长整型常量(long,占4个字节):C语言编程基础main(){intx;x=10*9*8*7*6*5*4*3*2*1;printf(%d,x);}例看看下面程序的输出是什么?运行结果:24320shortx;运行结果:3628800C语言编程基础3、实型变量(1)实型变量的分类单精度(float)型双精度(double)型占内存有效数字位数float4个字节7double8个字节14-15C语言编程基础(2)实例floatx;doubley;2000200320042011xy内存内存地址C语言编程基础例:#includestdio.hmain(){floata,b;a=123456.789e5;b=a+20;printf(“%f”,b);}%f是输出一个实数的格式符,程序运行后我们发现实际输出的值与我们预期的值有出入,b的理论值应该是12345678920,但一个实型变量只能保证7位有效数字,因此后面所加上的20无意义。类似,用程序计算1.0/3*3的结果并非是1。C语言编程基础例如:charc;c=’A’;c=’\034’;c=’\n’;c=’\x65’;c=65;c=0101;c=0x41;4.字符变量字符变量用来存放字符常量,注意一个字符变量只能存放一个字符。一般以一个字节来存放一个字符,或者说一个字符变量在内存中占一个字节。将一个字符赋予字符变量,实际上是将此字符的ASCII码存入内存。C语言编程基础例:charch;ch=‘A’;65ch我们可以看出字符的存储形式与整数的存储形式是类似的,这样使字符型数据和整型数据之间可以通用。一个字符数据既可以以字符的形式输出,也可以以整形的形式输出。以字符形式输出时,计算机将存储单元中的数据当成ASCII码,将其转换成相应字符输出,以整形形式输出时,直接将ASCII码作为整数输出。因此也可以对字符数据进行算术运算,此时相当于对它们的ASCII码进行算术运算。C语言编程基础例:#includestdio.hmain(){charc1,c2;c1=97;c2=98;printf(“%c,%c”,c1,c2);printf(“%d,%d”,c1,c2);}输出结果:a,b97,98例:main(){charc1,c2;c1=