第三章课件--C程序设计(第三版)-谭浩强-著_第1页
第三章课件--C程序设计(第三版)-谭浩强-著_第2页
第三章课件--C程序设计(第三版)-谭浩强-著_第3页
第三章课件--C程序设计(第三版)-谭浩强-著_第4页
第三章课件--C程序设计(第三版)-谭浩强-著_第5页
已阅读5页,还剩38页未读 继续免费阅读

下载本文档

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

文档简介

1、第3章 数据类型、运算符与表达式 C语言程序设计 第三章数据类型、运算符与表达式第三章数据类型、运算符与表达式C的数据类型常量与变量整型数据实型数据字符型数据变量赋初值各种数值型数据间的混合运算算术运算符和算术表达式赋值运算符和赋值表达式逗号运算符和逗号表达式 C语言程序设计 第三章数据类型、运算符与表达式第三章数据类型、运算符与表达式3.1 C的数据类型C数据类型基本类型构造类型指针类型空类型 void字符型 char整 型实 型(浮点型)单精度型 float双精度型 double数组类型结构体类型共用体类型短整型 short长整型 long整型 int枚举类型 enum数据类型决定:1.

2、数据占内存字节数2. 数据取值范围3. 可以进行的操作常量和符号常量v定义:程序运行过程中,其值不能被改变的量(常数)v分类:直接常量、符号常量3.2 常量与变量类型示例整型常量12 、 0 、 -3实型常量4.6 、 -1.23字符常量a 、 b 符号常量PRICE 、 PI C语言程序设计 第三章数据类型、运算符与表达式第三章数据类型、运算符与表达式l符号常量:用标识符代表常量u一般用大写字母: PRICE 、 PIu定义格式: #define 符号常量 常量u其值在作用域内不能改变和再赋值。例3.1 符号常量举例#define PRICE 30#include void main() i

3、nt num,total; num=10; total=num*PRICE; printf(total=%dn,total);total=300运行结果:符号常量的优点是:见名知意、一改全改 C语言程序设计 第三章数据类型、运算符与表达式第三章数据类型、运算符与表达式变量v 定义:其值可以改变的量。v 定义格式:数据类型 变量名; v 变量应该有名字,并在内存中占据一定的存储单元。 v 变量名和变量值有不同的含义l变量名实为一个符号地址 a3例 变量的使用main() int a; a=3; printf(“a=%d,a);变量名变量值存储单元 C语言程序设计 第三章数据类型、运算符与表达式第

4、三章数据类型、运算符与表达式标识符v定义:标识变量名、符号常量名、函数名、数组名、 文件名的字符串序列名字。v命名规则:l只能由字母、数字、下划线组成,且第一个字符必须是字母或下划线l大小写字母含义不同,一般用小写l不能使用关键字l尽管VC最长可以255,建议长度不超过8个字符v使用:先定义、后使用标识符应该“见名知意”,如 total , max标识符应该“不宜混淆”,如 l与1 , O与0这些标识符合法吗?1A、M.D.John、¥123、#33、Tatol、int、max C语言程序设计 第三章数据类型、运算符与表达式第三章数据类型、运算符与表达式3.3 整型数据整型常量(整常数)的三种

5、表示方法v十进制整数:由数字09和正负号表示. 如 123,-456,0v八进制整数:由数字0开头,后跟数字07表示. 如 0123,011v十六进制整数:由0 x(0X)开头,后跟09,af(AF)表示. 如 0 x123,0 xff C语言程序设计 第三章数据类型、运算符与表达式第三章数据类型、运算符与表达式 补充知识: C语言程序设计 第三章数据类型、运算符与表达式第三章数据类型、运算符与表达式位:一位二进制数在计算机中称为1位(bit,比特)1 Byte(字节)= 8 bit1 KB = 1024 Byte1 MB = 1024 KB1 GB = 1024 MB 字节:内存以字节为单元

6、组成v每个字节有一个地址v一个字节一般由8个二进制位组成(1byte=8bit)v每个二进位的值是0或101234567012345678910.7643251 C语言程序设计 第三章数据类型、运算符与表达式第三章数据类型、运算符与表达式 C语言程序设计 第三章数据类型、运算符与表达式第三章数据类型、运算符与表达式计算机中常用的数制、数据与编码方式计算机中常用的数制、数据与编码方式 在计算机中对信息的处理就是对数据的处理,数据是在计算机中对信息的处理就是对数据的处理,数据是信息在计算机内部的表示形式信息在计算机内部的表示形式人们通常使用的是十进制计数制,例如:555.55=5X102+5X10

7、1+5X100+5X10-1+5X10-2进位制进位制 二进制二进制 八进制八进制 十进制十进制 十六进制十六进制规则规则 逢二进一逢二进一 逢八进一逢八进一 逢十进一逢十进一 逢十六进一逢十六进一基数基数 R=2 R=8 R=10 R=16数码数码 0,1 0,1,2.,7 0,1,2.,9 0,1,2,.9, A,B,C,D,E,F 权权 2i 8i 10i 16i 计算机中常用的各种进位计数制 C语言程序设计 第三章数据类型、运算符与表达式第三章数据类型、运算符与表达式0 0000 1 00012 00103 00114 01005 01016 01107 01118 10009 100

8、110 (A) 101011 (B) 101112 (C) 110013 (D) 110114 (E) 111015 (F) 11110 000 1 0012 0103 0114 1005 1016 1107 111十六进制八进制说明: C语言程序设计 第三章数据类型、运算符与表达式第三章数据类型、运算符与表达式在计算机中在计算机中十进制数:十进制数:数据的输入和输出数据的输入和输出二进制数:二进制数:数据的存储和运算数据的存储和运算常识:八进制、十六进制数:一种计数方法,以弥补二进制数在书写位数过长的不足以0开头以0 x开头 C语言程序设计 第三章数据类型、运算符与表达式第三章数据类型、运算

9、符与表达式数值的表示方法原码、反码和补码v原码:最高位为符号位,其余各位为数值本身的绝对值v反码:l正数:反码与原码相同l负数:符号位为1,其余位对原码取反v补码:l正数:原码、反码、补码相同l负数:最高位为1,其余位为原码取反,再对整个数加1 C语言程序设计 第三章数据类型、运算符与表达式第三章数据类型、运算符与表达式原码反码补码+7000001110000011100000111-7100001111111100011111001+0000000000000000000000000-1271111111110000010-128 10000000(用一字节表示数)数的范围(-128+127

10、)1000000010000001-1261111111010000001v负数补码转换成十进制数:最高位不动,其余位取反加1例 原码:10000111 取反:11111000 加1: 11111001=-7 C语言程序设计 第三章数据类型、运算符与表达式第三章数据类型、运算符与表达式整型变量v整型数据在内存中的存放形式l数据在内存中以二进制补码形式存放l每一个整型变量在内存中占4个字节(32位,VC6.0编译系统) 10的原码 反码 补码-10的原码 反码 补码00 00 00 00 00 00 00 0000 00 00 00 00 00 00 0000 00 00 00 00 00 00

11、 0010 00 00 00 00 00 00 0011 11 11 11 11 11 11 1111 11 11 11 11 11 11 11整数的最左二进制位是符号位,0正、1负v整型变量的分类l三类整型变量 有符号无符号基本型(简称整型)int unsigned int短整型short或short intunsigned short长整型long或long intunsigned longl整数类型和取值范围v整型变量的定义l先定义后使用强制类型定义int a,b; ( 指定变量a、b为整型 )unsigned short c, d; (指定变量c、d为无符号短整型 )long e,f;

12、 ( 指定变量e、f为长整型) 00 00 00 00 00 00 11 0100 00 00 00 00 00 00 0000 00 00 00 00 00 11 0100 00 00 00 00 00 11 0100 00 00 00 00 00 00 0000 00 00 00 00 00 11 0100 00 00 00 00 00 11 0100 00 00 00 00 00 11 01short型short 型int 型unsigned short型Unsigned short型unsigned int 型符号位例3.2 整型变量的定义与使用 #include void main(

13、)int a,b,c,d; unsigned u ; a=12;b=-24;u=10; c=a+u;d=b+u; printf(“a+u=%d,b+u=%dn,c,d); 指定abcd为整型变量指定u为无符号整型变量定义放在函数开头的声明部分作用域不同类型混合运算,类型自动转换结果:a+u=22,b+u= -14定义与赋值同时进行:int a=12;v短整型数据的溢出l此情况称为“溢出”,运行时不报错,编程时要注意01 11 11 11 11 11 11 11短整型变量最大值3276710 00 00 00 00 00 00 00加1后是 32768的补码形式例3.3 整型数据的溢出 #inc

14、lude void main( ) short a , b; a= 32767; b= a+1; printf(%d , %d n ,a,b); 32767 , -32768 运行结果:改为:int b;结果是什么?整型常量的类型v整型常量的值在-32768+32767范围内,编译器认为是short类型 v整型常量的值超过上述范围,而在2147483648 +2147483647范围内,编译器认为是int类型v当系统定义int与long占内存长度相同,则两种类型常量均可以赋给 int和long型变量v在整型常量后面加大写L或小写l,则告诉编译器,把该整型常量作为long类型处理。例:123L、

15、0L v在整型常量后面加u,则按无符号整型方式存放,负数转换成补码再按无符号整型方式存放。 C语言程序设计 第三章数据类型、运算符与表达式第三章数据类型、运算符与表达式3.4 浮点型数据浮点型常量的表示方法v浮点数(float)又称为实数(real)v两种表示方法:l十进制小数形式:必须有小数点 如 0.123 、.123 、123.0 、0.0 、123.l 指数形式:e或E之前后必须有数字;指数必须为整数 如 123.456e0、12.3456e1 、1.23456e2 、 0.123456e3 、0.0123456e4 等规范化指数形式只有一位非零整数的指数形式是指数的输出形式6.28e

16、-2 表示 6.28 10 -2-3.0824e4 表示 3.0824 10 4 C语言程序设计 第三章数据类型、运算符与表达式第三章数据类型、运算符与表达式浮点型变量v浮点型数据在内存中的存放形式l浮点型数据在内存中占4个字节(32位)l在内存中分成3部分,指数为2的幂次 + .314159 1数符小数部分指数v浮点型变量的分类(VC环境) 单精度单精度 floatfloat 32位6双精度双精度 doubledouble 型型6464位位15长双精度长双精度long doublelong double型型6464位位15类类 型型 位数位数有效数字有效数字float x,y; (指定x、y

17、为单精度浮点型变量)double z; (指定z为双精度浮点型变量)long double t; (指定t为长双精度浮点型变量)v浮点型数据的舍入误差l数据超过有效位数,则产生误差l要避免一个很大的数与一个很小的数加减例3.4 浮点型数据的舍入误差 #include void main( ) float a , b; a= 123456.789e5; b= a+20; printf(%f n,b); 舍入误差使1.0/3*3 的结果并不等于1 !12345678848.000000 运行结果:浮点型常量的类型l浮点型常量一般按双精度64位处理,数后加F或f按单精度l浮点型常量不分float和d

18、ouble 3.5 字符型数据字符常量v定义:用单引号括起来的单个字符或转义字符字符常量的值:该字符的ASCII码值v定义格式:char 变量名 = 值v转义字符:反斜线后面跟一个字符或一个代码值表示如 a A n t 如 a97 ,A65 n10, t9char ch=65 与 char ch=A 与char=101是等效的表3.3 转义字符及其含义转义字符含义nvradddtbf“xhh转义字符含义换行垂直制表回车(不换行)响铃单引号3位8进制数代表的字符水平制表(右移8格)退格换页反斜杆双引号2位16进制数代表的字符例3.5 转义字符的使用 #include void main( ) p

19、rintf(“ ab ct derftgn”); printf(“htibbj k”);f gdeh j k显示结果:显示结果: 打印结果:fab gdeh jik字符变量l存放字符常量,占用一个字节,存放一个字符l定义形式: 赋值:char c1,c2; c1=a;c2=b;字符数据在内存中的存储形式及其使用方法l以二进制存放字符的ASCII码值(0255整数)l与整数的存储形式类似v以字符或整数形式输出例3.6 向字符变量赋整数 #include void main( ) char c1,c2 ; c1=97 ; c2=98 ; printf(“%c %c n,c1,c2); printf

20、(“%d %d n,c1,c2); a b97 98运行结果:运行结果:输出形式取决于printf函数中的格式符格式符为“%c”时输出的变量值为字符格式符为“%d时输出的变量值为整数对字符数据进行算术运算l实质是对其ASCII值进行算术运算例3.7 大小写字母的转换 #include void main( )char c1,c2 ; c1=a ; c2=b ; c1=c1-32; c2=c2-32; printf(“%c %c ,c1,c2); A B运行结果:运行结果:字符型与整型间互相赋值例: 互相赋值 #include void main( )int c1; char c2 ; c1=a

21、 ; c2=98 ; c1=c1-32; c2=c2-32; printf(“%c %c ,c1,c2); 字符串常量v定义:用双引号(“ ”)括起来的字符序列“How do you do” , “CHINA” , “a” , “$123.45”v存储:每个字符串尾自动加一个 0 作为字符串结束标志h e l l o 0例 字符串“hello”在内存中例 空串 “”0v字符常量与字符串常量不同a a 0例 a“a”例: char ch; ch=“A”; 例: char ch; ch=A; 3.6 变量赋初值v变量的使用:先定义,后使用v变量定义位置:一般放在函数开头v变量初始化:可以在定义时赋

22、初值例: int a=1,b= -3,c; float data=3.67; char ch=A; int x=1,y=1,z=1; int x=y=1;( )编译程序根据变量定义为其分配指定字节的内存单元.地址abc4字节4字节4字节地址地址.内存1-3随机数int a=b=c=33.7 各类数值型数据间的混合运算v整型、实型、字符型数据间可以混合运算自动转换v什么情况下发生l运算转换-不同类型数据混合运算时l赋值转换-把一个值赋给与其类型不同的变量时l输出转换-输出时转换成指定的输出格式l函数调用转换-实参与形参类型不一致时转换v运算转换规则:不同类型数据运算时先自动转换成同一类型doub

23、lefloatlongunsignedintchar,short低高说明:必定的转换运算对象类型不同时转换例 char ch; int i; float f; double d;ch/i + f*d - (f+i)intintdoubledoubledoubledoubledoubledoubleintintdoubledoubledoubledoubledoubledouble10+a +i*f - d/l例 int i; float f; double d; long l;强制转换(见P56强制类型转换运算符部分)v一般形式:(类型名)(表达式)例:(int)(x+y) (int)x+y

24、(double)(3/2) (int)3.6 v说明:强制转换得到 所需类型的中间变量, 原变量类型不变 例3.8#include main() float x; int i; x=3.6; i=(int)x; printf(“x=%f,i=%d”,x,i);结果:x=3.600000,i=3较高类型向较低类型转换时可能发生3.8 算术运算符和算术表达式C运算符算术运算符:(+ - * / % + -)关系运算符:( = !=)逻辑运算符:(! & |)位运算符 :( | &)赋值运算符:(= 及其扩展)条件运算符:(?:)逗号运算符:(,)指针运算符:(* &)求字节

25、数 :(sizeof)强制类型转换:(类型)分量运算符:(. -)下标运算符:()其它 :(( ) -)学习运算符应注意:v运算符功能v与运算量关系l要求运算量个数l要求运算量类型v运算符优先级别v结合方向v结果的类型算术运算符和算术表达式v基本算术运算符: + - * / %l结合方向:从左向右l优先级: - -* / % - + - (2) (3) (4)说明:“-”可为单目运算符时,右结合性两整数相除,结果为整数%要求两侧均为整型数据+ - * / 运算的两个数中有一个数为实数,结果是double型例 5/2 = -5/2.0 =例 5%2 = -5%2 = 1%10 = 5%1 = 5

26、.5%2例 5/2 = 2 -5/2.0 = -2.5例 5%2 = 1 -5%2 = -1 1%10 = 1 5%1 = 0 5.5%2 () C语言程序设计 第三章第三章 程序的灵魂程序的灵魂算法算法v自增、自减运算符+ l作用:使变量值加1或减1l种类:u前置 +i, -i (先执行i+1或i-1,再使用i值)u后置 i+,i- (先使用i值,再执行i+1或i-1)例j=3; k=+j; j=3; k=j+; j=3; printf(“%d”,+j); j=3; printf(“%d”,j+); a=3;b=5;c=(+a)*b; a=3;b=5;c=(a+)*b; /k=4,j=4/k=3,j=4/4,j=4/3,j=3/c=20,a=4/c=15,a=4l几点说明:例 -i+ i=3; printf(“%d”,-i+); -(i+) -(i+)/-3/-3 u+ - 不能用于常量和表达式,如 5+,(a+b)+u+ - 结合方向: 自右向左u优先级:- + - -* / % -+ - (2) (3) (4)u该运算符常用于循环语句中,使循环变量加减1v

温馨提示

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

评论

0/150

提交评论