C语言教程第2章数据类型运算符和表达式.ppt_第1页
C语言教程第2章数据类型运算符和表达式.ppt_第2页
C语言教程第2章数据类型运算符和表达式.ppt_第3页
C语言教程第2章数据类型运算符和表达式.ppt_第4页
C语言教程第2章数据类型运算符和表达式.ppt_第5页
已阅读5页,还剩45页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第2章数据类型、运算符与表达式,2.1一个简单的C程序例子2.2C程序常见符号分类2.3数据类型2.4常量2.5变量2.6常用运算符及表达式2.7赋值和表达式中的类型转换,2.1:一个简单的C程序例子,#include/*函数功能:计算两个整数相加之和入口参数:整型数据a和b返回值:整型数a和b之和*/intAdd(inta,intb)return(a+b);/*主函数*/main()intx,y,sum=0;printf(Inputtwointegers:);scanf(%d%d,/*输出x和y相加之和*/,并列的两个函数其中一个是程序的入口,程序注释,编译预处理命令,下面针对一般的C程序作几点说明:(1)一个完整的C语言程序可以由多个函数组成,但必须包含一个且只能包含一个名为main的函数(主函数)。程序总是从main函数开始执行,与它在程序中的位置无关。(2)在一个C函数模块中,由左右花括号括起来的部分是函数体,其中的语句系列实现函数的预定功能。(3)函数首部包括函数返回值类型、函数名、形参类型、形参名的说明。有时可以没有形参,但()不能省略。(4)C程序中的每一个语句必须以“;”结束,但书写格式是自由的。(5)#include是编译预处理命令,其作用是将双引号或尖括号括起来的文件内容读到该命令的位置处。(6)在C程序的任何位置处都可以用/*.*/作注释,以提高程序的可读性。,2.2C程序常见符号分类,关键字(Keyword)又称为保留字,C语言中预先规定的具有固定含义的一些单词数据类型修饰符int,控制语句return等标识符(Identifier)系统预定义标识符,main,printf等用户自定义标识符,通常用做变量名、函数名Add,x,y等运算符(Operator)34种,详见附录2分隔符(Separator)空格、回车/换行、逗号等其它符号大花括号“”和“”通常用于标识函数体或者一个语句块“/*”和“*/”是程序注释所需的定界符数据(Data)变量(Variable)常量(Constant),标识符命名,变量名函数名由英文字母、数字和下划线组成,大小写敏感不可以是数字开头直观,见名知意,便于记忆和阅读最好使用英文单词或其组合切忌使用汉语拼音下划线和大小写通常用来增强可读性variablenamevariable_namevariableName不允许使用关键字作为标识符的名字int,float,for,while,if等某些功能的变量采用习惯命名如:for语句所采用的循环变量习惯用i,j,k,Windows风格,UNIX风格,2.3数据类型(DataType),数据类型总表,数据类型决定:1.数据占内存字节数2.数据取值范围3.数据表示形式4.可参与的运算种类,b,B,KB,MB,GB,TB,如何衡量数据类型所占空间大小?bit,中文叫法:位Byte,中文叫法:字节Kilobyte(KB),中文叫法:KMegabyte(MB),中文叫法:兆Gigabyte(GB),中文叫法:GTerabyte(TB),中文叫法:T,1TB=1,024GB,1GB=1,024MB,1MB=1,024KB,1KB=1,024B,1B=8b,数据类型总表(数据类型修饰符),说明:数据类型所占字节数随机器硬件不同而不同.,标识符命名规则,在C语言中,变量名的命名要符合以下几个规则:组成:只能由英文字母、数字、下划线组成,且第一个字母必须是英文字母或下划线大小写敏感不能使用关键字不能与库函数名重名长度:TurboC系统下的有效长度为1至32个字符。命名原则:见名知意不宜混淆如l与I,o与0,例:判断下列标识符号合法性sumSumM.D.JohndayDate3days#33lotus_1_2_3charab_above$123,M.D.John,3days,#33,char,$123,ab,枚举常量:直接常量:整型常量实型常量字符常量字符串常量,定义:程序运行时其值不能改变的量(即常数)分类:符号(宏)常量:,2.4常量,1.整型常量的表示形式,2.4.1整型常量,在C语言中,有3种类型的整型常量:基本整型常量、长整型常量、无符号整型常量。基本整形常量三种形式:十进制整数:由数字09和正负号表示.如123,-456,0八进制整数:由数字0开头,后跟数字07表示.如0123,011十六进制整数:由0 x开头,后跟09,af,AF表示.如0 x123,0 xff,例12与12L,例30000为int型65536为longint型,问题:0123=()100 x123=()100 xff=()10,表示形式:十进制小数形式:(必须有小数点)如0.123,.123,123.0,0.0,123.指数形式:(e或E之前必须有数字;指数必须为整数)如12.3e3,123E2,1.23e4,e-5,1.2E-3.5,实型常量的类型默认double型在实型常量后加字母f或F,认为它是float型在实型常量后加字母lf或LF,认为它是longdouble型,2.4.2实型常量(实数或浮点数),定义:用单引号括起来的单个普通字符或转义字符.,字符常量的值:该字符的ASCII码值,如101-A012-n376-x61-a60-0483-(),例:A-101-x41-65,如A65,a97,048,n10,如aA?n101,转义字符:反斜线后面跟一个字符或一个代码值表示,例转义字符举例(ch2_001.c,ch2_004.c)main()printf(101x42Cn);printf(Isay:Howareyou?n);printf(CProgramn);printf(TurboC);,运行结果:(屏幕显示)ABCIsay:”Howareyou?”CProgramTurboC,2.4.3字符常量,字符常量与字符串常量不同,2.4.4字符串常量定义:用双引号(“”)括起来的字符序列存储:每个字符串尾自动加一个0作为字符串结束标志,2.4.5宏(符号)常量,一般形式:#define标识符字符串(宏体)功能:用指定标识符(宏名)代替字符串(宏体),宏体可缺省,表示宏名定义过或取消宏体,定义位置:任意(一般在函数外面)作用域:从定义命令到文件结束#undef可终止宏名作用域格式:#undef宏名,宏定义可嵌套,不能递归,引号中的内容与宏名相同也不置换,宏定义中使用必要的括号(),宏展开:预编译时,用宏体替换宏名-不作语法检查,如#defineYES1#defineNO0#definePI3.1415926#defineOUTprintf(“Hello,World”);,例#definePI3.14159printf(“2*PI=%fn”,PI*2);宏展开:printf(“2*PI=%fn”,3.14159*2);,例#defineWIDTH80#defineLENGTHWIDTH+40var=LENGTH*2;宏展开:var=80+40*2;,所谓“枚举”是指一一列举出来.声明枚举类型用enum开头例如:enumweekdaysun,mon,tue,wed,thu,fri,sat;声明了一个枚举类型enumweekday,可以用此类型来定义变量。如:enumweekdayworkday,week-end;workday和week-end被定义为枚举变量,它们的值只能是sun到sat之一。例如:workday=mon;week-end=sun;是正确的。(1)在C编译中,对枚举元素按整型常量处理,故称枚举常量。它们不是变量,不能对它们赋值。例如:sun=0;mon=1;是错误的。,2.4.6枚举常量,(2)枚举元素作为整型常量,它们是有值的,C语言编译按定义时的顺序使它们的值为0,1,2,。在上面定义中,sun的值为0,mon的值为1sat为6。如果有赋值语句:workday=mon;workday变量的值为1。这个整数是可以输出的。如:printf(%d,workday);将输出整数1。也可以改变枚举元素的值,在定义时由程序员指定,如:enumweekdaysun=7,mon=1,tue,wed,thu,fri,satworkday,week-end;定义sun为7,mon=1,以后顺序加1,sat为6。(3)枚举值可以用来做判断比较,用在条件语句中。如if(workday=mon)if(workdaysun),(4)一个整数不能直接赋给一个枚举变量。如:workday=2;是不对的。它们属于不同的类型。应先进行强制类型转换才能赋值。如:workday=(enumweekday)2;它相当于将顺序号为2的枚举元素赋给workday,相当于workday=tue;甚至可以是表达式。如:workday=(enumweekday)(5-3);(5)枚举元素代表的是一个整数值,是一个整数值的名字,并不是字符串,因此可以用于使用整数值的任何场合,但不能作为字符串直接输入和输出。workday=2;printf(“%s”,workday);/*错误的*/,1、变量的声明与初始化概念:其值可以改变的量变量定义的一般格式:数据类型变量名1,变量名2,变量名n;,变量初始化:定义时赋初值,例:inta,b,c;floatdata;,决定分配字节数和数的表示范围,合法标识符,例:inta=2,b,c=4;floatdata=3.67;charch=A;intx=1,y=1,z=1;intx=y=z=1;,变量的使用:先定义,后使用,例1intstudent;stadent=19;/Undefinedsymbolstatentinfunctionmain,变量定义位置:一般放在函数开头,2.5变量,一个类型说明语句可以同时定义多个同类型的变量,各变量之间用逗号“,”分隔。用户定义的变量名只是用来标识内存中的一个具体的存储单元,在这个存储单元中存放的数据为变量的值。在未对这些变量赋值前,这些变量中(即存储空间中)的值是随机的C语言允许在定义变量的同时为变量赋初值。在为整型变量初始化或赋值时,C编译系统自动将被赋数据转换成与相应变量的类型一致。由于各种整型变量所占的字节数有限,因此,它们所能存放的整数有一定的范围。,变量定义说明,整型变量占字节数随机器不同而不同,一般占一个机器字shortintlong可用sizeof(类型标识符)测量,实型变量float:占4字节,提供7位有效数字double:占8字节,提供1516位有效数字,字符型变量字符变量存放字符ASCII码char与int数据间可进行算术运算,例floata;a=111111.111;/*a=111111.1*/doubleb;b=111111.111;/*b=111111.111*/,例a=D;/*a=68;*/x=A+5;/*x=65+5;*/s=!+G/*s=33+71;*/,例1/*ch2_003.c*/#include#definePRICE12.5main()intnum=3;floattotal;charch1,ch2=D;total=num*PRICE;ch1=ch2-A+a;printf(“total=%f,ch1=%cn”,total,ch1);,运行结果:total=37.500000,ch1=d,2、const类型修饰符,用const修饰定义的变量为常量constfloatpi=3.1425926;const常量与宏常量相比的优点是什么?const常量有数据类型某些集成化调试工具可以对const常量进行调试,#definepi3.1425926,3、数据在内存中的存储格式,整型实型N=S2j字符型,所占位数决定实数的取值范围,所占位数决定实数的精度,4、char型与int型之间的关系,例:小写字母转换为大写字母,#includemain()charch=b;printf(%c,%dn,ch,ch);ch=b-32;printf(%c,%dn,ch,ch);,#includemain()charch=b;printf(%c,%dn,ch,ch);ch=b-(a-A);printf(%c,%dn,ch,ch);,b,98B,66,b,98B,66,2.6运算符和表达式,学习运算符应注意:运算符功能与运算量关系要求运算量个数要求运算量类型运算符优先级别结合方向结果的类型,基本算术运算符:+-*/%结合方向:从左向右优先级:-*/%-+-(2)(3)(4)说明:“-”可为单目运算符时,右结合性两整数相除,结果为整数%要求两侧均为整型数据,余数的符号与被除数的符号相同,例5/2=-5/2.0=,例5%2=-5%2=12%(-7)=(-12)%75%1=5.5%2,例5/2=2-5/2.0=-2.5,例5%2=1-5%2=-112%(-7)=5(-12)%7=-55%1=05.5%2(),一.算术运算符和表达式,关系运算符种类:=!=结合方向:自左向右优先级别:,例ca+b/c(a+b)ab!=c/(ab)!=ca=bc/a=(bc),关系表达式的值:是逻辑值“真”或“假”,用1和0表示,例inta=3,b=2,c=1,d,f;ab(ab)=cb+cbf=abc,/表达式值1,/表达式值1,/表达式值0,/d=1,/f=0,二.关系运算符和表达式,关系运算注意:,例若a=0;b=0.5;x=0.3;则a78在C中是允许的,值为,0,例inti=1,j=7,a;a=i+(j%4!=0);则a=,2,例a0结果为A100结果为,1,0,二.关系运算符和表达式,关系运算注意:,例注意区分“=”与“=”inta=0,b=1;if(a=b)printf(“aequaltob”);elseprintf(“anotequaltob”);,例应避免对实数作相等或不等的判断如1.0/3.0*3.0=1.0结果为可改写为:fabs(1.0/3.0*3.0-1.0)*/%-+-(2)(3)(4),例-i+-(i+)i=3;printf(“%d”,-i+);/-3,例-i+i=3;printf(“%d”,-i+);,五.自增、自减运算符+-,形式:表达式1,表达式2,表达式n结合性:从左向右优先级:15(级别最低)逗号表达式的值:等于表达式n的值用途:常用于循环for语句中,例a=3*5,a*4a=3*5,a*4,a+5例x=(a=3,6*3)x=a=3,6*a例a=1;b=2;c=3;printf(“%d,%d,%d”,a,b,c);printf

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论