《计算机二级第二章》由会员分享,可在线阅读,更多相关《计算机二级第二章(42页珍藏版)》请在金锄头文库上搜索。
1、第第2章章 C程序程序设计的初步知的初步知识第第2章章 C程序程序设计的初步知的初步知识简单C语言程序的构成和格式标识符、常量和变量整型数据实型数据算术表达式赋值表达式自加、自减运算符和逗号运算符简单C语言程序的构成和格式言程序的构成和格式例2. 1 求矩形的面积。 ( ) , , ; ; ; * ; (“,”,);输出结果:, , 简单C语言程序的构成和格式言程序的构成和格式1.是主函数名,其后的一对圆括号不能省。每一个可执行的程序都必须有一个且只能有一个主函数。一个程序总是从主函数开始执行。2.main()后面花括号“”括起来的部分为函数体。函数体内通常有定义(说明)部分和执行语句部分(可
2、执行语句)。执行部分的语句必须放在定义部分之后。3.语句用分号“;”结束。分号是语句的一部分,不是语句之间的分隔符。4.注释可帮助人们阅读和理解程序,可以出现在程序中任意合适的地方,对程序的运行不起作用。注释内容必须放在符号“ /*”和“*/”之间。5.程序中的“#include”称为命令行,命令行必须用“”号开头,行尾不能加“;”号,它不是程序中的语句。在程序中调用不同的标准库函数,应当包含相应的文件,以使程序含有所调用标准库函数的说明信息。标识符、常量和符、常量和变量量标识符常量符号常量变量标识符符标识符:由字母、数字和下划线组成,并且第一个字符必须为字母或下划线,大写字母和小写字母被认为
3、是两个不同的字符。合法的标识符:、非法的标识符:、 、 、标识符符关键字语言预先规定的标识符,在程序中都代表着固定的含义,不能另作他用。例如,用来说明变量类型的标识符int、double、if等。预定义标识符用户标识符语言的标识符可以分为以下三类:标识符符关键字预定义标识符在语言中预先定义并具有特定含义的标识符,如:库函数的名字(如)预编译处理命令(如)这类标识符允许重新定义另作他用,使其失去预先定义的原意。用户标识符语言的标识符可以分为以下三类:标识符符关键字预定义标识符用户标识符用户根据需要定义的标识符,又称自定义标识符。例如,变量名、函数名、数组名等。用户标识符要遵守标识符命名规则,还应
4、注意做到“见名知义”,以增加程序的可读性。语言的标识符可以分为以下三类:说明:如果用户标识符与关键字相同,编译时系统将给出出错信息;如果用户标识符与预定义标识符相同,系统不报错,预定义标识符将失去原定含义。常量常量整型常量(短整型常量、长整型常量):如12、-1、0实型常量:如3.1415926、-2.71828、0字符常量:如A、d字符串常量:如NCRE、Beijing常量是指在程序运行过程中,其值不能被改变的量。 符号常量符号常量例如在计算圆面积的程序中有:#define PI 3.14159其中PI称为符号常量,它代表一串字符3.14159,对程序进行编译时,凡在程序中出现PI的地方,编
5、译程序均用3.14159来替换。符号常量:用一个符号名代表一个常量。这个符号名必须在程序中进行特别的“指定”,并符合标识符的命名规则。变量量一个变量实质上是代表了内存中的某个存储单元。对变量进行的操作就是对该存储单元进行的操作。语言规定,程序中所有变量都必须先定义后使用。变量有整型变量、实型变量、字符型变量等类型。系统在编译时根据变量类型为其分配相应的存储单元。变量是指在程序运行过程中其值可以改变的量。在程序中用一个符合标识符命名规则的名字作为标识。整型数据整型数据整型常量整型变量整型数据的分类整数在内存中的存储形式整型数据整型数据整型常量整型常量例如、 、等,可以是负数。十进制数例如、等,只
6、能是整数。八进制数开头必须是数字“”。例如0x10、0xde、0xf等,只能是整数。 十六进制数用数字和字母(或大写)开头。整型常量可以用十进制、八进制和十六进制等形式表示。整型数据整型数据整型整型变量量int k;int i,j,n,m; 基本型的整型变量用类型名关键字int定义,例如:整型变量只能存放整型数值。不同的编译系统为变量开辟的内存单元大小不同。int i=1,j=0,k=2;语言规定,可以在定义变量的同时给变量赋初值,也称变量初始化。例如:整型变量分为基本型、短整型、长整型和无符号型四种。整型数据整型数据整型数据的分整型数据的分类不同的编译系统或计算机系统对各类整型数所占用的字节
7、数有不同的规定。整型数据整型数据整数在内存中的存整数在内存中的存储形式形式当用两个字节存放一个short类型正整数时,例如正整数,其在内存中的二进制码为:因此用两个字节存放类型的最大正整数是:其值为。正整数正整数正整数在内存中是用“原码”形式存放的。整型数据整型数据整数在内存中的存整数在内存中的存储形式形式 求原码的反码。把原码除符号位之外的二进制码按位取反,即得到该原码的反码。例如,的反码为。 把所得的反码加,即得到原码的补码。因此+即在内存中的二进制码为。若用两个字节表示,即为:)负整数在内存中是以“补码”形式存放的。取(十进制数)补码的步骤如下:负整数负整数整型数据整型数据整数在内存中的
8、存整数在内存中的存储形式形式先对除符号位之外的各位取反。例如有补码11111010反后为。将所得二进制数转换成十进制数。例如,的十进制数为。对所求得的数再减,即为。)把内存中以补码形式存放的二进制码转化成十进制的负整数的步骤:可见,由两个字节存放的最小整数是1000000000000000,它对应的十进制数为-32768,而-1在内存中存放的二进制码为1111111111111111。负整数负整数整型数据整型数据整数在内存中的存整数在内存中的存储形式形式用两个字节存放一个整数时,若说明为无符号整数,则最高位不再用来存放整数的符号,16个二进制位全部用来存放整数,因此无符号整数不可能是负数。这时
9、,1111111111111111代表不再是,而是。无符号整数无符号整数实型数据型数据实型常量小数形式指数形式实型变量单精度型(float)双精度型(double)实型数据型数据实型常量型常量1小数形式是由数字和小数点组成,例如0.123、 .123、123.、0. 等都是合法的实型常量。2. 指数形式以“”或“”后跟一个整数来表示以10为底的幂数。字母或之前必须要有数字,且或后面的指数必须为整数。例如: 2.3026可以表示为0.230261、2.30260、23.026-1。 注意:在字母或的前后以及数字之间不得插入空格。实型常量又称实数或浮点数,它有两种形式。实型数据型数据实型型变量量实
10、型变量分为单精度型(float)和双精度型(double)。实数实数数值范围数值范围有效数字位有效数字位分配内存分配内存单精度-10381038位4个字节双精度-10308103081516位个字节在内存中,实数一律是以指数形式存放的。在计算机中可以精确地存放一个整数,实型数却存在误差。注意注意算算术表达式表达式基本的算术运算符运算符的优先级、结合性和算术表达式强制类型转换表达式算算术表达式表达式基本的算基本的算术运算符运算符基本的算术运算符: 、 、*、这些运算符需要两个运算对象,称为双目运算符。说明:求余运算符的运算对象只能是整型,其结果是两数相除后所得的余数。其它运算符的运算对象可以是整
11、型,也可是实型。单目运算符:运算符只有一个运算对象,运算符必须出现在运算数的左边。例如:-34,+3.4说明:)如果双目运算符两边运算数的类型一致,则所得结果的类型与运算数的类型一致。)如果双目运算符两边运算数的类型不一致,系统将自动进行类型转换,使运算符两边的类型达到一致后,再进行运算。)所有实型数的运算均以双精度方式进行。若是单精度数,则在尾数部分添,使之转化为双精度数。算算术表达式表达式运算符的运算符的优先先级、结合性和算合性和算术表达式表达式1算术运算符的优先级。算算术表达式表达式运算符的运算符的优先先级、结合性和算合性和算术表达式表达式2算术运算符和圆括号的结合性。只有单目运算符“
12、”和“ ”的结合性是从右到左的,其余运算符的结合性都是从左到右。在算术表达式中,可使用多层圆括号,但左右括号必须配对。运算时从内层圆括号开始,由内向外依次计算表达式的值。在算术表达式中,若包含不同优先级的运算符,则按运算符的优先级由高到低进行;若表达式中运算符的级别相同,则按运算符的结合方向进行。算算术表达式表达式运算符的运算符的优先先级、结合性和算合性和算术表达式表达式3算术表达式。用算术运算符和一对圆括号将运算数连接起来的、符合语言语法的表达式称为算术表达式。其中:运算数可以是常量、变量和函数等。例如:2+sqrt(c)*b运算规则和要求:算算术表达式表达式强制制类型型转换表达式表达式强制
13、类型转换表达式的形式如下:(类型名)(表达式)其中:(类型名)称为强制类型转换运算符,利用强制类型转换运算符可以将一个表达式的值转换成指定的类型。例如:(int)3.2343 ; (double)(10%3)把所得结果转换成双精度数。赋值表达式表达式赋值运算符和赋值表达式复合赋值表达式赋值运算中的类型转换赋值表达式表达式赋值运算符和运算符和赋值表达式表达式“ ”称为赋值运算符。由赋值运算符组成的表达式称为赋值表达式,其形式如下:变量名表达式赋值号的左边必须是一个变量名,赋值号的右边必须是合法的表达式。赋值运算的功能:先求出右边表达式的值,然后把此值赋给赋值号左边的变量。赋值表达式表达式赋值运算
14、符和运算符和赋值表达式表达式赋值运算符的优先级别只高于逗号运算符,且具有自右向左的结合性。赋值运算符不同于数学中的“等于号”,这里不是等同的关系,而是“赋予”操作。赋值表达式=的作用是将变量的内容赋给变量的存储单元,中原有的数据被替换掉。赋值后,变量中的内容保持不变。赋值运算符的左侧只能是变量,不能是常量或表达式。a+b=c是非法的赋值表达式。等号右边的表达式也可以是一个赋值表达式。例如:=+ 合法=+= 不合法说明说明赋值表达式表达式复合复合赋值表达式表达式在赋值运算符之前加上其他运算符可以构成复合赋值运算符。复合赋值运算符:、*、/、两个符号之间不可以有空格。复合赋值运算符的优先级与赋值运
15、算符的优先级相同。n+=1等价于n=n+1n*=m+3等价于n=n*(m+3)注意注意赋值表达式表达式复合复合赋值表达式表达式例2. 3 已有变量a,其值为,计算表达式a+=a-=a+a的值。先计算“”,因的初值为9,所以该表达式的值为18,注意的值未变。计算“18”,此式相当于“18”,因的值仍为9,所以表达式的值为9,注意的值已为9。计算“9”,此式相当于“(9)”,因的值已是9,所以表达式的值为18。步骤步骤赋值表达式表达式赋值运算中的运算中的类型型转换在表达式(不包括赋值表达式)中,如果运算符两边的整数类型不相同,将进行类型之间的转换。转换规则如下:若运算符两边一个是短整型,一个是长整
16、型,则将短整型转换为长整型,然后进行运算。若运算符两边一个是有符号整型,一个是无符号整型,则将有符号整型转换成无符号整形,然后进行运算。在赋值表达式中,赋值号右边的值先转换成与赋值号左边的变量相同的类型,然后进行赋值。说明说明赋值表达式表达式赋值运算中的运算中的类型型转换当赋值号左边的变量为短整型,右边的值为长整型时,短整型变量只能接受长整型数低位上两个字节中的数据,高位上两个字节中的数据将丢失。例如,若有以下定义和语句:short a;unsigned long b;b=98304; a=b;printf(%dn,a);则中的值为-32768。注意注意赋值表达式表达式赋值运算中的运算中的类型
17、型转换当赋值号左边的变量为无符号整型,右边的值为有符号整型时,则把内存中的内容原样复制。右边数值的范围不应超出左边变量可以接受的数值范围。这时负数将转换为正数。当赋值号左边的变量为有符号整型,右边的值为无符号整型时,复制的机制同上。注意注意自加、自减运算符和逗号运算符自加、自减运算符和逗号运算符 相当于; 相当于。运算符“ ”和“ ”的运算对象不能是常量或表达式。例如、()等都是不合法的。+、-自加、自减运算符和逗号运算符自加、自减运算符和逗号运算符、 、 都是合法的表达式。+、-若有:int i=5;则 ,则先进行增运算,的值为,表达式的值也为;,则先进行减运算,的值为,表达式的值也为;,则表达式先取的值,然后进行增运算,使中的值为;,则表达式先取的值为,然后进行减运算,使中的值为。自加、自减运算符和逗号运算符自加、自减运算符和逗号运算符运算符“ ”和“ ”的结合方向是“自右至左”。不要在一个表达式中对同一个变量进行多次诸如或等运算,这样的表达式在不同编译系统中结果不相同。+、-自加、自减运算符和逗号运算符自加、自减运算符和逗号运算符用逗号将表达式连接起来的式子称为逗号表达式。逗号表达式的一般形式为:表达式 ,表达式 , ,表达式说明:)逗号运算符的结合性为从左到右,因此逗号表达式将从左到右进行运算。)在所有运算符中,逗号运算符的优先级最低。逗号逗号