第2章C语言基础,北京科技大学计算机系,C语言程序设计,2,本章主要内容,本章介绍C语言的基础,包括:数据类型运算符和表达式均是程序设计的基本知识为什么讨论这些知识?,,通常程序要对数据进行操作处理:处理的对象是数据通过运算符和表达式进行操作,3,例如:,【例2.1】计算圆的面积,半径为5cm。程序如下:,main(){floatr,area;r=5;area=3.14*r*r;printf("%f\n",area);},运算结果是输出圆的面积:78.500000,程序中用到的数据:r、area、5、3.14对数据进行的运算:*、=,例jc2_1,4,分析:,计算机操作处理时,要完成以下工作:在内存中给半径r和运算结果area开辟存储空间,存放它们的值。应该留多大的地方来存放它们的值?数据5和3.14与r、area不同,它们是在编写程序时就给出确定的值,在运算过程中不会改变。这样的数计算机怎么处理?对整数5和小数3.14,计算机存放时是否有区别?,涉及数据类型的基本知识,5,C语言的数据类型,C数据类型,本章讨论基本类型数据,6,2.1.1整型数据,1.整型数据的类型基本整型数据int,分配2Byte短整型数据shortint,分配2Byte长整型数据longint,分配4Byte整型数据均以二进制补码形式存储,问题:为什么要采用补码?如何表示?,7,计算机中正、负数的表示,例如:109=(1101101)2要区别:+109和-109方法是:将符号也数码化即:正的符号+用0表示负的符号-用1表示,∴计算机中的数表示方法是:符号位+二进制数值(以8bit为例)+109→+1101101→01101101-109→-1101101→11101101,8,问题:计算机计算复杂化,例如计算:(-19)+(+22)10010011+00010110,解决的方法是:使用反码或补码的表示方法(按前述表示的编码称为原码),即能将减法一律转换为加法。,需要判断符号是否相同:如果相同,结果符号不变,并进行绝对值相加如果不同,结果取绝对值大的数的符号,并进行绝对值相减,9,原码、反码和补码,正数:原码、反码、补码相同符号位为0,数值为对应的二进制数。+109,[01101101]原=[01101101]反=[01101101]补负数:原码符号位为1,数值为绝对值的二进制数。-109[11101101]原反码符号位为1,数值为绝对值的二进制数各位变反。-109[10010010]反补码符号位为1,数值为绝对值的二进制数各位变反加1。-109[10010011]补,10,2.有符号和无符号整型数据,有符号的整型数据signedint无符号的整型数据unsignedint区别是将最高位看作符号位还是数据位,例如:1111111110101000作为有符号数使用时,最高为符号位为负数,值是:-88(再求一次补)作为无符号数使用时,最高为数据位为无符号的数,值是:65448,11,例如:,main(){unsignedintm;m=65448;printf("\nm=%d\n",m);printf("m=%u\n",m);},例jc2_a,输出结果:m=-88m=65448,按有符号数输出,按无符号数输出,12,整型数据的类型及规定,方括号表示可选项int分配2Byte,long分配4Byte,13,2.1.2实型数据,1.实型数据的类型单精度实型数据float,分配4Byte双精度实型数据double,分配8Byte2.实型数据的存储,单精度实型,指数部分,小数部分,小数的符号位,指数的符号位,14,实型数据的类型及规定,C标准并未具体规定各种实型数据所占字节数,也不规定具体小数和指数部分的位数。一般而言,小数部分位数多,数据表示的有效数字多,精度就高;而指数部分位数多,则表示的数据范围更大。,有效数字的意义?,例jC2_b,15,2.1.3字符型数据,字符型数据char,分配1Byte字符型数据是指字母、数字、各种符号等用ASCII值表示的字符例如a是一个char类型数据,称作字符常量,存储:,01100001,2.1.4空类型,空类型void通常与指针或函数结合使用,16,2.2常量、变量与标准函数,主要内容:常量变量标准库函数,17,2.2.1常量,在运行程序的过程中值保持不变的量1.整型常量十进制:0~9八进制:0~7,以0开头十六进制:0~9,A~F/a~f,以0 x或0X开头,例如:100-80+12301002401000730 x380 x100X100XFF0 x0a,18,1.整型常量,整型常量的类型:根据值大小默认类型。整型常量后面加l或L,则认为是longint型例如:123L、0L、432l、0 x100l,注意:十六进制常量中可以使用大写字母A~F,也可以使用小写字母a~f。八进制常量中不能出现数字8或9例如:018、0921非法,19,2.实型常量,十进制形式1.01.+12.0-12.00.0指数形式1e31.8e-3-123E-6-.1E-3,指数只能是整数,而尾数则可以是整数也可以是小数,无论指数或尾数均不能省略例如:1e、E.5、E-3非法实型常量的类型:默认为double型,后面加F(或f),则强调表示该数是float类型例如:3.5f、1e2F,20,3.字符型常量,可视字符常量单引号括起来的单个可视字符例如:a、A、+、3、等转义字符常量单引号括起来的\与可视字符组合,例如:,21,4.字符串常量,用双引号括起的一个字符序列例如:"ABC"、"123"、"a"、"\n\t""\nGoodmorning"字符串常量的长度:所包含的字符个数字符串常量的存储方式:,所占存储单元数:串长度+1例如:,字符串结束标记,,,22,5.符号常量,以标识符来代表的常量事先编译预处理命令define定义编译时先由系统替换为它所代表的常量,再进行编译例如:,#defineLEN2.5main(){floata,b;a=2*3.14*LEN;b=3.14*LEN*LEN;printf("a=%f,b=%f\n",a,b);},编译前系统进行替换,23,5.符号常量,main(){floata,b;a=2*3.14*2.5;b=3.14*2.5*2.5;printf("a=%f,b=%f\n",a,b);},define是编译预处理命令,必须以“#”开头编译预处理命令在第7章讨论。,替换为,,,24,2.2.2变量,1.变量的有关概念在程序运行过程中,其值改变的数据,称为变量,变量用标识符表示,称为变量名。变量必须“先定义后使用”系统为变量分配存储单元,存储变量的值。编写程序时通过变量名来存、取变量值。,例如:有变量a它的值是510,25,2.变量定义,变量定义的一般格式:数据类型说明符变量列表;例如:inti,j;longk,m;floatx,y;charch1,ch2;,,必须使用合法的标识符作变量名不能使用关键字为变量命名,26,3.变量的初始化:,允许在说明变量的时候对变量赋初值。例如:inta=5,b=10+2;doublex=23.568,y;charch1=a,ch2=66,ch3=\142;表示定义变量并对变量存储单元赋值。错误的初始化:inta=3+b,b=5;floatm=n=23.16;,27,2.2.3标准库函数,由C编译系统定义的一种函数,存放在系统函数库中,用户可以根据需要随时调用常用函数如:printf、scanf、fabs、sqrt、sin、(常用数学函数参见教材P30表2.5)函数调用形式:函数名([参数表])例如:putchar(a)sqrt(x),例jc2_3,,28,2.3运算符和表达式,主要内容:算术运算符和算术表达式赋值运算符和赋值表达式关系运算符和关系表达式逻辑运算符和逻辑表达式位运算符和位运算表达式条件运算符和条件表达式逗号运算符和逗号表达式其他运算符及其运算,29,运算符的有关概念,作用:对运算对象完成规定的操作运算类型:按运算对象分:单目、双目、三目按功能分:算术、赋值、关系、逻辑条件、逗号、位、其他,30,运算符的优先级和结合性,优先级指各种运算符号的运算优先顺序例如:算术运算优先于关系运算算术运算中先*/后+-,结合性指运算符号和运算对象的结合方向分为:从左向右(左结合)和从右向左(右结合)例如:算术运算符为左结合a-b+4赋值运算符为右结合a=b=5(C语言规定见教材P297附录B),31,本章涉及的运算符,+-*/%++--+-=+=-=*=/=%=a=a+1表达式的值为5,且a=6,b=5,37,说明:,++和--的运算对象只能是变量(或运算结果是变量的表达式),不能是常量(或运算结果是数值的表达式)。例如:5++、(a+2)++不合法。具有右结合性,结合方向为从右到左。例如:–a++等价于-(a++)如果有多个运算符连续出现时,C系统尽可能多的从左到右将字符组合成一个运算符例如:i+++j等价于(i++)+j-i+++-j等价于-(i++)+(-j),38,main(){inta=5;printf("%d%d\n",a,a++);},说明(续):,对函数参数的求值顺序:TurboC系统先计算最右边的参数值,再依次计算左面的参数值。,【例2.5】有多个函数参数且为同一变量自增的运算处理。,输出结果:65,运行例2.5,39,说明(续):,【例2.6】有多个函数参数且为同一变量多次自增的运算处理。,main(){inta=5;printf("%d%d\n",a,(a++)+(a++));},输出结果:711,运行例2.6,40,赋值运算,赋值运算符(右结合)=+=-=*=/=%=printf("%d%d\n",a},输出结果:8102-11,0000000000001010printf("%d%d\n",a>b-1);},输出结果:409,运行jc2_d,请自行分析运行结果,53,条件表达式运算,条件运算符:?:条件表达式的一般形式表达式1?表达式2:表达式3例如:m=10charch;可以对变量a、ch、student进行doublex;printf("%d%d",sizeof(int),sizeof(a));printf("%d%d",sizeof(double),sizeof(x));printf("%d%d\n",sizeof(float),sizeof(char));},输出结果:228841,运行jc2_e,59,2.4运算中数据类型的转换,2.4.1数据类型的自动转换转换原则:,自动将精度低、表示范围小的运算对象类型向精度高、表示范围大的运算对象类型转换,例如有定义:inta;charch;表达式:a-ch*2+35La-ch*2+35.,60,2.赋值运算中的类型转换,=小数部分自动补0,=自动舍去实型表达式的小数部分(注意不进行四舍五入)==自动截取表达式值的低字节赋值,舍去高字节==自动给高字节补0或补1,61,运行结果:,例如:,main(){inta;longb;charc;floatx;a=35.67;b=65537;c=321;x=120;printf("a=%d,b=%ld\n",a,b);printf("c=%c,x=%f\n",c,x);a=c;c=b;b=a;printf("a=%d,b=%ld,c=%d\n",a,b,c);},运行jc2_f,a=35,b=65537c=A,x=120.000000a=65,b=65,c=1,62,2.4.2数据类型的强制转换,强制转换的一般形式(类型名)表达式例如:(int)(b+3*x)%31/(float)a+6,,注意:(float)22/5与(float)(22/5)不同错误的类型转换:(int)b=a+5b=int(3*a),

展开阅读全文

c语言教程免费ppt,《C语言教程》PPT课件.ppt相关推荐

  1. C语言实验系统PPT展示,c语言第四谭浩强机实验课件.ppt

    c语言第四谭浩强机实验课件.ppt 名人名言,"人最宝贵的东西是生命,生命属于我们只有一次.人的一生应当这样度过当他回首往事时,他不因虚度年华而悔恨,也不因碌碌无为而羞愧.这样在他临死的时候 ...

  2. 计算机网络安全 鲁立,计算机网络安全教学课件ppt作者鲁立08课件.ppt

    计算机网络安全教学课件ppt作者鲁立08课件.ppt 第8章 入侵检测系统 本章要点 ? 入侵检测系统模型.工作过程. ? 入侵检测系统分类和工作原理. ? 基于主机的入侵检测系统和基于网络的入侵检测 ...

  3. 单片机单灯亮灭c语言,任务一 单片机控制单灯亮灭课件.ppt

    任务一 单片机控制单灯亮灭课件.ppt 任务一 单片机控制单灯亮灭 教学导航 任务单 任务准备 案例示范 知识梳理与总结 任务作业 任务单 任务一电路图 任务一 单片机控制单灯亮灭 1.1 数制与编码 ...

  4. 计算机硬件设备介绍 ppt,计算机硬件设备的认识课件.ppt

    <计算机硬件设备的认识课件.ppt>由会员分享,提供在线免费全文阅读可下载,此文档格式为ppt,更多相关<计算机硬件设备的认识课件.ppt>文档请在天天文库搜索. 1.计算机组 ...

  5. 计算机结构原理与组成ppt,计算机组成原理与系统结构课件.ppt

    <计算机组成原理与系统结构课件.ppt>由会员分享,提供在线免费全文阅读可下载,此文档格式为ppt,更多相关<计算机组成原理与系统结构课件.ppt>文档请在天天文库搜索. 1. ...

  6. 计算机控制系统的类型的ppt,计算机控制系统及应用课件.ppt

    <计算机控制系统及应用课件.ppt>由会员分享,提供在线免费全文阅读可下载,此文档格式为ppt,更多相关<计算机控制系统及应用课件.ppt>文档请在天天文库搜索. 1.2.5 ...

  7. 计算机中ppt,计算机中信息表示课件.ppt

    <计算机中信息表示课件.ppt>由会员分享,提供在线免费全文阅读可下载,此文档格式为ppt,更多相关<计算机中信息表示课件.ppt>文档请在天天文库搜索. 1.第二章 计算机中 ...

  8. 计算机四级准考证ppt,计算机等级考试四级课件PPT.ppt

    计算机等级考试四级课件PPT.ppt 四级网络技术 第一单元 网络规划与设计 第一章 网络系统结构与设计的基本原则 第一章 网络系统结构与设计的基本原则 1.1 基础知识 1.1.1 计算机网络的分类 ...

  9. 计算机控制实验ppt模板,计算机控制技术实验课件.ppt

    计算机控制技术实验课件.ppt 计算机控制技术实验课件,易杰,目录,实验一模数.数模转换实验实验二多路模拟信号AD.DA转换实验实验三采样实验实验四保持器实验实验五积分分离PID控制实验,实验一模数. ...

  10. 计算机在化学化工中的应用ppt绪论,化学反应工程-绪论课件.ppt

    化学反应工程-绪论课件.ppt 1.原料的预处理 2.进行化学反应 3.反应产物的分离与提纯 第一.三两步属于单元操作,是化工原理内容,处于从属地位.,第二步为整个加工过程的核心,是化学反应工程学科的 ...

最新文章

  1. php安装redis扩展详细步骤 不会可以加QQ
  2. cvpr 2017 re-id papers
  3. android webview 重定向 多次load问题,解决webview 第二次调用loadUrl页面不刷新的问题...
  4. mysql分布式数据库中间件对比
  5. 学习Promise之前你必须理解的知识点:异步处理的通用模型
  6. QTextEdit显示中文乱码解决,中文GB2312转Unicode,QString、QByteArray 转换,16进制显示,toUtf8与toLocal8Bit区别
  7. SPSS25安装详细步骤
  8. VC++ IE缓存管理研究
  9. python商业爬虫学徒计划_(教程)下载:麻瓜编程Python商业爬虫学徒计划麻瓜编程的视频python办公自动化麻瓜...
  10. 手机常见分辨率及代表机型
  11. 构建综合性平安校园视频监控系统,全面保障在校师生安全
  12. 【概率论与数理统计(研究生课程)】知识点总结6(抽样分布)
  13. linux btrfs 格式化,Btrfs 文件系统修复技巧
  14. coq程序编写好用的IDE推荐
  15. createrepo:创建本地源
  16. star测试软件,PSTAR准备
  17. 数字IC前端笔试常见大题整理(简答+手撕)
  18. 分布式系统与计算机网络
  19. CSM3416SF兼容MP2451,MCP16301HT-E,LT1933ES6,AOZ1282CI
  20. sicily题目分类

热门文章

  1. Linux搭建Redis集群(搭建集群必看)
  2. 关于我在《大话5G》这本书里学到了什么——5G和物联网不得不说的关系
  3. 局域网SDN技术硬核内幕 三 从物到人——SDN走进园区网络
  4. ubuntu查看像素坐标和像素值GUI工具 【 mtpaint 】
  5. samba服务testparm时提示rlimit_max: increasing rlimit_max (1024) to minimum Windows limit (16384)处理办法
  6. 混音教程入门|新手学混音必须注意这9点!| MZD Studios
  7. 免费的中医电子病历系统软件
  8. c语言编程绝对质数,C语言《绝对素数》
  9. python求梅花数_《梅花易数》又叫梅花数
  10. 一个完整的软件项目管理流程包括什么?有什么软件项目管理工具?