C语言程序设计的初步知识

C语言程序设计的初步知识

ID:36885731

大小:285.50 KB

页数:38页

时间:2019-05-10

上传者:U-145848
C语言程序设计的初步知识_第1页
C语言程序设计的初步知识_第2页
C语言程序设计的初步知识_第3页
C语言程序设计的初步知识_第4页
C语言程序设计的初步知识_第5页
资源描述:

《C语言程序设计的初步知识》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1第2章C语言程序设计的初步知识本章要点:标识符命名规则常量和变量基本数据类型常用运算符及表达式运算符的优先级及结合性本章难点:不同类型数据间的混合运算运算符的优先级自增(++)自减(--)运算符的使用 22.1C语言的数据类型整型字符型实型(浮点型)枚举类型单精度型双精度型数组类型结构体类型共用体类型构造类型基本类型指针类型空类型数据类型 32.2常量、变量和标识符2.2.1标识符C语言中的标识符可以分为系统定义标识符和用户定义标识符。系统定义标识符关键字关键字是C语言系统使用的具有特定含义的标识符,不能作为预定义标识符和用户定义标识符使用。C语言定义了32个关键字,如表2.1所示。2)预定义标识符预定义标识符也是具有特定含义的标识符,包括系统标准函数名和编译预处理命令等,如scanf、printf、define和include等都是预定义标识符。 4表2.1C语言中的关键字autobreakcasecharconstcontinuedefaultdodoubleelseenumexternfloatforgotoifintlongregisterreturnshortsignedsizeofstaticstructswitchtypedefunsignedunionvoidvolatilewhile关键字必须用小写字母;不允许使用关键字为变量、数组和函数等操作对象命名。 52.用户定义标识符用户定义标识符用于对用户使用的变量、数组和函数等操作对象进行命名。例如将一个变量命名为a,将一个数组命名为date,将一个函数命名为fun等。用户标识符命名时要注意:(1)C语言对英文字母的大小写敏感,即同一字母的大小写被认为是两个不同的字符。例如total与TOTAL是不同的标识符。(2)标识符必须由字母或下划线开头,并且除了字母、数字和下划线外,不能含有其他字符。(3)标识符的命名要见名知意,即通过变量名就知道变量值的含义。(4)标识符的有效长度随系统而异,但至少前8个字符有效。如果超长,则超长部分被舍弃。 62.2.2常量1.定义:在程序执行期间,其值不可改变的量称为常量2.类型:数值常量例如:5,-10,3.14等符号常量即用一个符号代表一个常量例2.1用标识符代表常量。#definePI3.1415926main(){floats,r;r=5;s=PI*r*r;printf("%f",s);} 7说明:符号常量必须先定义后才能用它表示一个数值。符号常量的值在其作用域内不能改变,也不能再被赋值。符号常量名习惯用大写字母表示。 82.2.3变量1.变量概念:程序执行期间值可以改变的量。命名规则:变量名由标识符表示,只能由字母、数字和下划线三种字符组成,且第一个字符必须为字母或下划线。例如:以下为不合法的变量名:M.D.Jess,1add,age&,5th,lotus-1-2-3,cd*ef,int2.变量的定义要使用变量,必须为变量命名。变量名是用户自己定义的标识符,习惯上由小写字母组成。变量定义的一般格式为:数据类型标识符变量名1,变量名2,…,变量名n;inta;/*定义了整型变量a*/ 93.变量的初始化C语言允许在定义变量的同时给变量赋值,这称为变量的初始化。变量初始化的一般格式为:数据类型标识符变量名1=初值1,变量名2=初值2,…,变量名n=初值n;C语言允许在定义变量的同时初始化变量,如:inta=2;/*指定a为整型变量,初值为2*/floatf=3.45;/*指定f为实型变量,初值为3.45*/charc=‘A';/*指定c为字符变量,初值‘A'*/也可以使被定义的变量的一部分赋初值,如:inta=1,b=-3,c; 10在C语言中,变量必须强制定义,其目的是:1、凡未被事先定义的,不作为变量名。2、每一个变量被指定为一确定的类型,在编译时就能为其分配相应的存储单元。3、指定每一个变量为一确定的类型,在编译时据此检查该变量所进行的运算是否合法。*选变量名时,要做到“见名知意”例如:namest_agexmnlclasssum*大小写字母是两个不同的字符,C变量名习惯用小写字母表示。*建议变量名的长度不要超过8个字符。注意: 112.3整型数据2.3.1整型常量1.整型常量的形式十进制整数:由数字(0-9)和正负号表示例如:123、-456、0等八进制整数:以0开头数是八进制数例如:0123即(123)8=(83)10(123)8=182+281+380=(83)10十六进制整数:以0x或0X开头,例如:0x123即(123)16=(291)10main(){inta=0123;b=0x123;/*0123是八进制数,0x123是十六进制*/printf("a=%d,b=%d",a,b);}程序运行结果为:a=83,b=291 12n进制数十进制乘权求和,顺序输出除基数取余,逆序输出二进制八进制(十六进制)三(四)位变一位一位变三(四)位 原码、反码、补码正数的原码、反码、补码相同负数的原码为该数二进制最高位为1负数的反码:除符号位外,按位取反负数的补码:反码加一13 142.整型常量的类型我们已知整型变量可分为int、shortint、1ongint和unsignedint、unsignedshort、unsignedlong等类别。(1)一个整常量,如果其值在-32768~+32767范围内,则认为它是int型。可以将它赋值给int型和1ongint型变量。一个整常量,如果其值超过了上述范围,而在-2147483648~2147483647范围内,则认为它是1ongint型。(3)如果某一计算机系统的C版本确定的shortint与int型数据在内存中占据的长度相同,则它的表示范围与int型相同。(4)常量中无unsigned型,但一个非负值的整常量可以赋值给unsigned型整变量,只要它的范围不超过变量的表示范围即可。(5)在一个整常量后面加一个字母l或L则认为是1ongint型常量,例如123l、432L,这往往用于函数调用中。 152.3.2整型变量的分类基本型:以int表示短整型:以shortint或short表示1.类型长整型:以longint或long表示(123l、123L)无符号基本型(unsignedint)无符号型无符号短整型(unsignedshort)无符号长整型(unsignedlong)(-32768~32767)一个无符号整型变量中可以存放的正数的范围比一般整型变量中正数的范围扩大一倍。inti;/*变量i的数值范围:-32768~32768*/unsignedintj;/*变量j的数值范围:0~65535*/1.整型变量的类型 16整型变量的字长short型∶字长16位(2个字节)。long型∶字长32位(4个字节)。int型∶随编译程序而定(可以是2个字节,也可以是4个字节)C要求long型数据长度不短于int型,short型不长于int型。(short<=int<=long)long型可以得到大范围的数据,但同时会降低运算速度,因此除非不得已,不要随便使用long型。 17整型数据的溢出:main(){inta,b;a=32767;b=a+1;printf(“”%d,%d”,a,b);}运行结果:32767,-32767改进:将变量a和b改成long型,并按%ld格式输出。 182.整型变量的定义前面已提到,C规定在程序中所有用到的变量都必须在程序中指定其类型,即“定义”。这是和BASIC、FORTRAN不同的,而和PASCAL相类似。例如:inta,b;/*指定变量a,b为整型*/unsignedshortc,d;/*指定变量c,d为无符号短整型*/1onge,f;/*指定变量e,f为长整型*/对变量的定义,一般是放在一个函数的开头部分(也可以放在程序中间,但作用域只限于某一部分程序)。例2.4整型变量的定义与使用。main(){inta,b,c,d;/*指定a,b,c,d为整型变量*/unsignedu;/*指定u为无符号整型变量*/a=20;b=-40;u=10;c=a+u;d=b+u;printf("c=%dd=%d",c,d);}运行结果为:c=30,d=-30 192.4实型数据2.4.1实型常量1.实型常量的形式(两种):十进制数形式:由数字和小数点及正负号组成。(注意:必须有小数点)例如:3.148.6-23.指数形式:由数字、小数点、字母e或E及正负号组成。(注:e或E之前必须有数字,且后指数必须为整数)例如:正确:3.5E-52e3错误:E23.6e3.5.e62.实型常量的类型多数C编译系统对实型常量按双精度(double)类型处理,以提高运算精度。此时系统为实型常量分配8个字节的存储空间。如果在实型常量后加字母f或F,则强调表示该数是float型常量,这时系统会为其分配4个字节的存储空间。 202.4.2实型变量实型变量可分为:单精度(float型)如:floatx,y;双精度型(double型)如:doublea,b,c;说明:1.float型变量在内存中占4个字节;double型变量在内存中占8个字节。2.单精度实数提供7位有效数字;双精度实数提供15~16位有效数字。3.一个实型常量不分float和double型,一个实型常量可以赋给一个float型或double型变量,并根据变量的类型截取实型常量中相应的有效位数字。例如:floata;doubleb;a=123456.789e5;b=123456.789; 213.5字符型数据3.5.1字符常量1.字符常量:用单引号括起来的一个字符。例如:‘a’‘B’‘#’‘!’2.转义字符:指不能用符号直接表示的字符常量。将反斜杠()后面的字符转变成另外的意义。如‘ ’中的“n”不代表字母n而作为“换行”符。例如:‘ ’换行‘t’横向跳格(水平制表)‘b’退格‘\’反斜杠字符‘r’回车‘f’换页‘a’报警‘’空字符main(){printf("Yb= ");}运行结果:程序运行时在屏幕上显示结果:=程序运行时在打印机上输出结果:¥ 22注意:字符常量首尾的单引号是定界符,不占存储空间。在C语言中,‘a’和a是不同的。前者代表字符常量,后者代表一个标识符。‘a’和‘A’是不同的字符常量。前者存储的是小写字母a的ASCII码值为97,后者存储的是大写字母A的ASCII码值为65。转义字符代表一个字符,在内存中只占一个字节的存储空间。转义字符‘’就是ASCII码值为0的字符,常用于表示字符串结束的标志符。‘ddd’形式的转义字符是用ASCII码(八进制数)表示的一个字符,例如‘101’代表字符‘A’,‘012’代表“换行”。‘xhh’形式的转义字符也代表一个字符,反斜杠后必须以小写字母x开头,后面的两位数字为十六进制数。例如,‘xa’和‘xA’都代表回车换行符,等价于转义字符‘ ’。 233.5.2字符变量定义形式:char标识符1,标识符2,…,标识符n例如:charc1,c2,c3,ch;c1=‘a’;c2=‘b’;c3=‘c’;ch=‘d’;说明:1、字符变量在内存中占一个字节。2、在内存中,是把字符对应的ASCII码值放到存储单元中.3、字符型数据与整型数据之间可以通用. 24main(){charc1,c2;c1=97;c2=98;printf(“%c%c ”,c1,c2);printf(“%d%d ”,c1,c2);}输出结果:ab9798main(){inti;charc;i=‘a’;c=97;printf(“%c,%d ”,c,c);printf(“%c,%d ”,i,i);}输出结果:a,97a,97 252.5.3字符串常量1.定义:括在一对双引号之内的字符序列或转义字符序列称为字符串常量。例如:“Howareyou!”“a”“*abc t”2.存储:字符串中的字符依次存储在内存中一块连续的区域内,并且把空操作字符‘’自动附加到字符串的尾部作为字符串的结束标志。故字符个数为n的字符串在内存中应占n+1个字节。例:c=“china”china 26‘b’与‘B’是否相同?‘b’与“b”是否相同?b为98,B为66'b'是字符常量,“b"是字符串常量思考?注意:字符串常量首尾的双引号是定界符,不属于字符串的内容。如果字符串本身包括了双引号或反斜杠,必须使用转义字符。不要将字符常量与字符串常量混淆,‘a’是字符常量,“a”是字符串常量,二者不同。前者只占一个字节的存储空间,存放字符‘a’的ASCII码值;后者占两个字节的存储空间,分别存放字符‘a’和字符串结束标志‘’。字符串常量中包含转义字符时,一定要注意其长度的计算。在写字符串时不必加‘’,字符‘’是系统自动加上的。 272.6算术运算符和算术表达式2.6.1基本的算术运算符和算术表达式1.基本的算术运算符在C语言中,基本的算术运算符有5个:+(加法运算符,正值运算符),-(减法运算符,负值运算符),*(乘法运算符),/(除法运算符),%(模运算符)注意:除法运算符“/”的运算对象可以是各种类型的数据,但是当进行两个整型数据相除时,运算结果也是整型数据,即只取商的整数部分;而操作数中有一个为实型数据时,则结果为双精度实型数据,即double型。例如,5.0/10的运算结果是0.5,5/10的运算结果是0,而不是0.5,10/4的运算结果是2。求余运算符“%”要求运算对象必须是整型操作数,它的功能是求两个操作数相除的余数,余数的符号与被除数的符号相同。例如,11%3的值为2,-11%3的值为-2,2%-5的值为2。 282.算术表达式算术表达式是指用算术运算符和括号将运算对象(也称操作数,如常量、变量、函数等)连接起来、符合C语法规则的式子,如:a*b/c-1.5+'a'在算术表达式中,运算对象可以是各种类型的数据,包括整型、实型或字符型的常量、变量及函数调用。2.6.2算术运算符的优先级、结合性在5个算术运算符中,*、/和%的优先级相同且高于+、-。当运算符的优先级相同的情况下,这5个运算符的结合方向为从左至右(先左后右,简称左结合)。例:a-b+c由于算术运算符为左结合,故先执行a-b,再执行加c的运算。 292.7赋值运算符和赋值表达式2.7.1基本赋值运算符(=)形式:变量名=常量或表达式作用:将右边常量或表达式的值赋给左边的变量例如:b=c+d赋值符号“=”就是赋值运算符,它的作用是将一个数据赋给一个变量。如x=5的作用是执行一次赋值操作,将常量5赋给变量x。结合方向:从右向左。例如:“a=b=c=10;”等价于“a=(b=(c=10));”即先将常量10赋给变量c,然后再将10赋给变量b,最后将10赋给变量a。注意:如果表达式类型与左边的变量的类型不匹配,自动进行类型转换。 302.7.2复合赋值运算符复合赋值运算符:在赋值符“=”之前加上其它运算符共有10种复合赋值运算符+=,-=,*=,/=,%=/*复合算术运算符5个*/&=,^=,|=,<<=,>>=/*复合位运算符5个*/例如:a+=3a=a+3x*=y+3x=x*(y+3)注意,a=a+b如果b是包含若干项的表达式,则相当于它有括号。如:x%=y+3x%=(y+3)x=x%(y+3)/*不要写成x=x%y+3*/ 312.8逗号运算符和逗号表达式1.逗号运算符:即“,”优先级:为所有运算符中级别最低的。2.逗号表达式形式:表达式1,表达式2,……,表达式n求解过程:顺次求解表达式1,表达式2……最后求解表达式n。逗号表达式的值为表达式n的值。例如:a=3*4,a*5a=3*4,a*5,a+5注意:并不是任何地方出现的逗号都是作为逗号运算符,函数参数也是用逗号来间隔的6017 322.9自增运算符、自减运算符及C语言运算符的优先级2.9.1自增运算符自增运算符(++)是单目运算符,其作用是使单个变量的值增1。自增运算符种类有两种:前置++i,先执行i+1,再使用i值;后置i++,先使用i值,再执行i+1。例如:j=3;k=++j;则k=4,j=4;j=3;k=j++;则k=3,j=4。 332.9.2自减运算符自减运算符(--)是单目运算符,其作用是使单个变量的值减1。自减运算符种类也有两种:前置--i,先执行i-1,再使用i值;后置i--,先使用i值,再执行i-1。例如:j=3;k=--j;则k=2,j=2;j=3;k=j--;则k=3,j=2。注意:自增运算符(++)、自减运算符(--),只能用于变量,不能用于常量和表达式。例如,5++、--(a+b)等都是非法的。++和--的结合方向是“自右至左”,其优先级高于算术运算符。例如i=3,-i++相当于-(i++),因此表达式的值为-3,i=4。自增运算符、自减运算符,常用于循环语句中,使循环控制变量加(或减)1,以及指针变量中,使指针指向下(或向上)一个地址。 342.9.3C语言运算符的优先级与结合性C的运算符有以下几类。(1)算术运算符(+-*/%)(2)关系运算符(><==>=<=!=)(3)逻辑运算符(!&&||)(4)位运算符(<<>>~|^&)(5)赋值运算符(=及其扩展赋值运算符)(6)条件运算符(?:)(7)逗号运算符(,)(8)指针运算符(*和&)(9)求字节数运算符(sizeof)(10)强制类型转换运算符(类型)(11)分量运算符(.->)(12)下标运算符([])(13)其他(如函数调用运算符()) 35C语言规定了运算符的优先级和结合性。运算符的优先级别从高到低依次为:初等运算符,如()、[]、->、.;单目运算符,如!、~、++、--、*(指针)、&、(类型);算术运算符(先乘除,后加减);关系运算符;逻辑运算符(不包括!);条件运算符;赋值运算符;逗号运算符。所谓结合性是指,当一个操作数两侧的运算符具有相同的优先级时,该操作数是先与左边的运算符结合,还是先与右边的运算符结合。自左至右的结合方向,称为左结合性;反之,称为右结合性。结合性是C语言的独有概念。除单目运算符、赋值运算符和条件运算符是右结合性外,其他运算符都是左结合性。 362.10不同类型数据间的混合运算1.隐式类型转换隐式类型转换主要又可分为两类:算术转换和赋值转换。(1)算术转换当表达式中的运算对象不同时,系统会进行类型的自动转换。转换的基本原则是:自动将精度低、表示范围小的运算对象类型向精度高、表示范围大的运算对象转换。(2)赋值转换赋值转换主要出现在赋值表达式中,不管赋值运算符右边是什么类型,都要转换为赋值运算符左边的类型。若赋值运算符右边的值表示范围更大,则左边赋值所得到的值将失去右边数据的精度。 372.强制类型转换C语言提供了强制类型转换运算符来实现强制类型转换。格式:(类型)表达式例如:(int)3.5注意:在进行类型转换时,操作数的值并不发生改变,改变的只是表达式值的类型。例如:floatx=3.5;i=(int)x;/*i的值为3*/使用强制转换类型得到的是一个所需类型的中间量,原表达式类型并不发生变化。例如,(double)a只是将变量a的值转换成一个double型的中间量,其数据类型并未转换成double型。(int)(x+y);/*将x+y的值转换为int类型*/(int)x+y;/*将x的值转换为int类型,再与y相加*/ 382.11本章小结(1)C语言的数据类型有:基本类型、构造类型、指针类型和空类型。其中基本数据类型包括整型、实型(包括单精度实型和双精度实型)、字符型和枚举类型等。构造类型包括数组类型、结构体类型和共用体类型。(2)C语言标识符的构造规则:①标识符由字母、数字和下划线组成。②标识符必须以字母或下划线开头。(3)常量是指在程序运行过程中其值不能被改变的量。常量通常有4种类型,整型常量、实型常量、字符型常量、字符串常量。整型常量有十进制、八进制和十六进制表示。实型常量有小数和指数两种表示形式,均按double类型处理。字符常量是用单引号(即撇号)括起来的单个可视字符或转义字符。字符串常量是用一对双引号括起来的若干字符序列,存储时系统会自动在其末尾加‘’作为字符串的结束标志,因此字符串常量所占存储空间等于字符串长度加1。(4)在程序运行时,其值能被改变的量叫变量,变量必须先定义后使用。变量的类型由定义语句中的数据类型标识符指定。系统根据变量类型分配相应的存储空间,存放变量的值。通过变量初始化可以给变量赋初值。不能直接使用未经赋值的变量,因为它的值是一个不确定的数据。(5)在C语言中,基本的算术运算符有5个,分别是+、-、*、/、%。其中*、/和%的优先级相同且高于+、-。当运算符的优先级相同的情况下,这5个运算符的结合方向为从左至右(先左后右,简称左结合)。(6)在进行混合运算时,如果一个运算符两侧的运算对象的数据类型不同,系统则按“先转换,后运算”的原则,首先将数据自动转换成同一类型,然后在同一类型数据间进行运算。C语言提供了强制类型转换运算符来实现强制类型转换,其格式为:(类型)表达式

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。
关闭