资源预览内容
第1页 / 共35页
第2页 / 共35页
第3页 / 共35页
第4页 / 共35页
第5页 / 共35页
第6页 / 共35页
第7页 / 共35页
第8页 / 共35页
第9页 / 共35页
第10页 / 共35页
亲,该文档总共35页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
计算机高级语言(C语言)第1章C程序设计基础知识柯凡kefancugb.edu.cn教三楼206中国地质大学(北京)第1章C程序设计基础知识o1.1变量o1.2常量o1.3算术运算符与算术表达式o1.4赋值运算符与赋值表达式o1.5自加、自减、逗号运算符o1.6*位运算中国地质大学(北京)1.1变量o变量:在程序运行过程中值可以改变的量n定义变量的目的是要求计算机在内存中为数据开辟存储空间o假设内存是512MB,既有512*1024*1024个存储单元(每个字节为一个单元),每个存储单元都有一个编号,里面可以存放数据o不同类型的数据所占据空间的大小也不同o数据与内存的关系如同房客与宾馆之间的关系n每个变量要具备3个要素:o变量名o变量的数据类型o变量的值中国地质大学(北京)标识符o标识符:为函数、变量等取的符号化的名称n标识符的命名规则:o1)由字母,数字,下划线组成,以字母或下划线开头。(不同的系统对标识符的长度的规定不同)n例如:sum,_t1_2,n5等o2)C语言的关键字不能作为标识符n32个关键字,如int、long、if等详见教材o3)C的标识符区分大小写,如Sum和sum是不同的o4)变量名取名尽量做到“见名知意”中国地质大学(北京)变量名o变量名名除了遵循标识符规定外,还需要注意以下规则:n1)在同一个函数体内,变量名不能重复定义n2)所有变量的定义语句必须放在函数体的最开始处n3)变量要强制定义,即变量要先定义后使用n4)尽量避免定义与库函数中函数名同名的变量,如printf、scanf等,容易造成混乱中国地质大学(北京)变量的定义方法o变量定义的语法格式:n变量类型变量名列表;o例如:inta,b;unsignedintc,d;longf;n变量定义的同时还可以为变量指定初始值o例如:inta=5;中国地质大学(北京)数据类型基本数据类型整型:int,short,unsigned,signed2字节long4字节字符型:char,unsignedchar,signedchar1字节实型单精度型:float4字节双精度型:double8字节longdouble10字节枚举类型:enum构造类型数组结构体共用体指针类型空类型中国地质大学(北京)o示例1-1:求计算式35+80的值#includevoidmain()整形变量 int a,b,c; a=35; b=80; c=a+b; printf(value=%dn,c);中国地质大学(北京)o本程序的其他写法: int a=35,b=80; a=a+b; printf(value=%dn,a); int a; a=35+80; printf(value=%dn,a); int a,b; a=35; b=80; a=a+b; printf(value=%dn,a); int a=35,b=80,c; c=a+b; printf(%d+%d=%dn,a,b,c);中国地质大学(北京)o使用int型数据,要注意允许值的范围,当超过取值范围后会发生溢出n例1-2:整形变量的溢出#includevoidmain()shortinta;a=32767;a=a+1;printf(Resultis:%dn,a);运行结果为:运行结果为:Result is:-32768Result is:-32768中国地质大学(北京)ocharn每一个字符变量只能存放一个字符n在内存中存放的是该字符的ASCII码值o字符数据的运算n字符数据可以进行加减乘除等各种运算,参加运算的数据是该字符对应的ASCII码值。n字符数据可以和整型数据相互通用,可以彼此赋值字符变量中国地质大学(北京)o示例1-3:#includevoidmain()charc1,c2;c1=a;c2=b+1;printf(%c,%cn,c1,c2);printf(%d,%dn,c1,c2);输出结果:输出结果: a ,a ,c c 97 ,997 ,99 9 中国地质大学(北京)1.2常量o常量:在程序运行过程中值不变的量。包括:n1)整型常量n2)实型常量n3)字符常量n4)字符串常量n5)符号常量n6)const常量(新的C标准适用)中国地质大学(北京)1)整型常量o默认为十进制:如123,-456n八进制:以0开头,如012n十六进制:以0x或0X开头,如0X12、0x7Bo默认为int型n末尾加l或L表示long型,如:123L、0x7ALo默认为signed型n末尾加u或U表示unsigned型,如:123u、0x7AU中国地质大学(北京)2)实型常量o只能用十进制表示:n1)小数方式:如12.3,-4.56,.25n2)指数方式:数+e或E+指数,如1.2e3,23.4E-4,而1.2e2.3,.e2,E4均不合法n3)默认为双精度类型o末尾加f或F表示单精度,如1.2f,-2.3F中国地质大学(北京)3)字符常量o1)由一对单引号括起来的一个字符n如:a,Ao注意区分:n5和5:5表示字符5,5表示整数5o2)转义字符:单引号括起来的是以开头加其他字符,用来表示特殊字符n如:n表示换行t表示水平制表符一个单引号一个双引号一个反斜线0空字符ddd八进制ASCII码代表的字符,如101xhh十六进制ASCII码代表的字符,如x41中国地质大学(北京)4)字符串常量o一对双引号括起来的多个字符n如:hello、Howareyou!n区分字符串和字符:字符串常量除了包含双引号中的所有字符,还隐含一个特殊字符0o如a实际包含a和0两个字符,其中0用来标识一个字符串的结束,输出时没有任何显示。o请思考0、0、0的区别中国地质大学(北京)5)符号常量o给常量值取名(遵循标识符的命名规则)n增加了程序的可维护性和可读性n符号常量仍然是常量,值在程序运行中不可改变n为区别变量,符号常量通常用大写字母表示o“定义”符号常量使用编译预处理指令#definen格式:#define符号常量名常量值o如:#defineMAX_VALUE35n编译预处理命令在编译时完成,将符号常量用值来替换,因此常量值后面不要加分号中国地质大学(北京)o例1-4:求圆的面积#include#definePI3.1415926voidmain()floatr,area;printf(Inputthecirclesradius:);scanf(%f,&r);area=PI*r*r;printf(Theareais:%fn,area);中国地质大学(北京)6)const常量o新的C语言规范中,允许在定义变量之前加上const修饰符,将定义一个具有特定数据类型、具有符号化名称的常量n程序在运行时,系统在内存中为const常量分配存储空间nconst常量的定义格式:const数据类型常量名=常量值;o例如:constfloatPI=3.1415926;nconst常量通过C语句来定义,只能在定义的时候赋初值,在程序运行过程中,不能修改该常量的值中国地质大学(北京)1.3算术运算符与算术表达式算数运算符示例+3+5、+10-3-5、-1.9*5.6*6/5/3、5.0/3、5/3.0、5.0/3.0(两个整数相除,结果也是整数。如:5/3=1)(分子或分母为实型,结果为double型)%(模运算符即求余运算符)9%4结果为1(9整除4后的余数)(只适用于整型数据)中国地质大学(北京)o算术表达式n用算术运算符和扩号将运算对象连接起来并且符合C语言规则的式子叫算术表达式n运算对象包括常量,变量,函数o例如:a*b/c-1.5+ao算术运算符的优先级和结合性n优先级:o先*/%、再+-如x-y%4o尽量通过添加括号()明确优先级关系n结合性o左结合,即对同等优先级的运算符,从左向右中国地质大学(北京)1.4赋值运算符与赋值表达式o赋值运算符:=n作用:将右边的数据、变量或表达式的值赋给左边的变量o赋值表达式:n赋值运算符前加上其它运算符构成的运算符n赋值方法:变量=表达式o注意:左侧必须是变量,不能是表达式n例如:a=a+1;o合法,含义是将变量a所对应的值取出来,加1运算后,将运算结果写回a对应的内存单元;赋值表达式的值为a的值n例如:a+1=2;o不合法,=左边是表达式中国地质大学(北京)n优先级:低于算术运算符o先计算=右边的表达式,再执行赋值运算n结合性:右结合(自右至左)o例如:a=b=c=5;合法o例如:a=b=3=c=5;不合法n变量赋值与变量赋初值是不同的,比较:o变量赋初值:inta=5;o变量赋值:inta;a=5;n类型转换o若赋值运算符两侧数据类型不一致,系统要自动进行类型转换:赋值运算符右边的类型向左边的类型转换o表达式计算时也存在数据类型转换中国地质大学(北京)各种数值型数据间的混合运算o整型、实型、字符型(与整型数据通用)数据间可以进行混合运算。但在进行运算时,不同类型的两个数据运算前要先转换成同一类型,再运算。这种转换是系统自动进行的,称为自动类型转换(隐含转换)。转换规则如图中国地质大学(北京)o说明:n图中横向向左的箭头表示必定进行的转换。o例如:两个float型数据进行运算时,要先转换为double型数据。两个char型数据进行运算时,要先转换为int型数据n纵向的箭头表示当参加运算的对象类型不同时进行类型转换的方向o例如:double型数据和int型数据进行运算时,int型数据要转换为double型再运算n不同类型的数据转换是从低级向高级数据类型转化的。n多个类型不同的数据进行运算时,不是一次性的将所有数据全部转化为同一类型后运算,而是按照运算顺序的需要一步一步进行的o例如:有doubled;floatf;inti;longe;表达式10+a+i*f-d/e的求解方式n在自动类型转换过程中,数据在转换过程中,精度不提高,也不改变原变量的类型,只是改变了值的表现形式中国地质大学(北京)强制类型转换o为了解决自动类型转换所带来的“不确定性”,可以采用强制类型转换,在赋值之前将表达式的计算结果强制转换为某种类型,再赋值给某个变量n形式:(类型名)(表达式)n例如:o(double)a/*将a的值转换成double类型*/o(int)(x+y)/*将x+y的值转换成int类型*/o(float)(5%3)/*将5%3的值转换成float类型*/n说明:o类型转换,仅仅是为了本次运算或赋值的需要而对变量的数据长度进行一时性的转换,并不能改变数据说明时对该变量规定的数据类型中国地质大学(北京)复合算数赋值运算符o赋值运算符与算术运算符的组合,有5个:n+=、-=、*=、/=、%=n基本使用格式为: 变量算术运算符=表达式n它等价于:变量=变量算术运算符表达式o例如:表达式a+=2等价于a=a+2o例如:表达式a*=3+5相当于a=a*(3+5)中国地质大学(北京)1.5自加、自减、逗号运算符o自加+和自减-是独特高效的运算符,也很容易混淆n使变量的值加一或加一n单目运算符,操作对象只能是变量不能是表达式或常量n常用于整型数据的运算n前缀方式:将+或-放在变量的前面o功能:先执行变量与1相加或相减的运算,将运算结果写回变量,最后取该变量的值参与运算o例如:x=+y;等价于y=y+1;x=y;n后缀方式:将+或-放在变量的后面o功能:先取出变量的值参与运算,运算完成后,再执行变量与1加或减的运算,最后将运算结果写回变量中o例如:x=y+;等价于x=y;y=y+1;中国地质大学(北京)逗号运算符o逗号,用于连接多个表达式组合成一个表达式,整个表达式称为逗号表达式n逗号表达式的一般形式为:o表达式1,表达式2,表达式3n结合性:左结合o逗号表达式从左至右,逐个计算每个表达式的值,直到完成最后一个表达式的计算,最后一个表达式的值作为整个逗号表达式的值n优先级:最低n例如:o3+5,6+8a=3*5,a*4(a=3*5,a*4),a+5中国地质大学(北京)o练习:阅读下面程序写出可能的运行结果,并与程序运行的实际情况对照,注意变量的初始化、赋值引起的值的变化#includevoidmain()intn1,n2=80;charc1,c2=n2;floatf=80.678;doubled=1.234;printf(n1=%d,n2=%dn,n1,n2);printf(c1=%c,c2=%cn,c1,c2);printf(f=%f,d=%fn,f,d);c1=f;n1=f+d;f=(n1,n2,d,c1);/*逗号表达式的值,就是最后一个表达式的值*/printf(n1=%d,n2=%dn,n1,n2);printf(c1=%c,c2=%cn,c1,c2);printf(f=%f,d=%fn,f,d);中国地质大学(北京)1.6*位运算o是对某个字节内的二进制位进行逐位操作n操作对象只能是int型和char型数据o6个位运算符:n&(按位与)n|(按位或)n(按位异或)n(按位取反)n(右移位)aba&ba|baba000001010111100110111100按优先级由高到低为:按优先级由高到低为:&|位运算规则:位运算规则:中国地质大学(北京)位运算符的计算方法及应用场合o1按位与运算符:&n用于将某些二进制位保留不变,而将其它二进制位清零n如:11&1的结果是保留11的最低位不变,其余各位清零,结果为100001011&00000001所以11&1结果为100000001o2按位或运算符:|n用于将某些二进制位保留不变,而将其它二进制为置1n如10|1的结果是保留10的高15位不变,将最低位置1,结果为1100001010|00000001 所以10&1结果为1100001011中国地质大学(北京)o3按位异或运算符:n用来翻转若干二进制位,而保留其它位不变n如:3115将保留高12位不变,而低4位被翻转(取反),结果为160001111100001111所以31&15结果为1600010000o4按位取反运算符:n对所有的二进制位逐位取反,将1变为0,将0变为1。n如:1将高15位变成1,而最低位变成0,即-2的补码,结果为-2。 0000000000000001所以1结果为-21111111111111110n由于int类型在不同系统中占用的存储空间不同,取反运算的结果也会有所差别。中国地质大学(北京)o5左移位运算符:n左移位将数据中的每一个二进制位向左平移若干位,右边的空位补0,移出的二进制位被丢弃,相当于乘2的效果。例如13,结果为8。30000000000000001所以1n右移位将数据中的每一个二进制位向右平移指定位,移出的部分被丢弃,左侧补充的内容为0或1(数据为无符号数时,填0;数据为带符号数时,填充为符号位,即正数填0负数填1)n右移相当于除2的效果。如152的结果为3,-152的结果为-220000000000001111所以152结果为3000000000000001121111111111110001所以-152结果为-21111111111111110
收藏 下载该资源
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号