基本数据类型及运算.ppt_第1页
基本数据类型及运算.ppt_第2页
基本数据类型及运算.ppt_第3页
基本数据类型及运算.ppt_第4页
基本数据类型及运算.ppt_第5页
已阅读5页,还剩84页未读 继续免费阅读

下载本文档

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

文档简介

C语言,主讲:董鑫正 邮箱:,内容回顾,怎样包含一个头文件(stdio.h)? 主函数怎么写?(包括函数首部和函数体) 每个语句以什么标点结束? 用哪个函数完成格式化输出功能? 用哪个函数完成格式化输入功能? .c? .obj? .exe?,第二章 基本数据类型及运算,C语言基本数据类型 C语言运算符和表达式 C语言格式输入输出函数 C语言字符输入输出函数,C语言数据类型,例2.1:圆的半径为5cm,计算圆的面积并输出,#include void main() float r, area; r = 5; area = 3.14*r*r; printf (“%f n“, area); ,程序中的数据: r、area 5、3.14 对数据的运算: * 、=,C语言数据类型,计算机在操作处理时,要完成以下工作: 在内存中要给半径 r 和面积 area 开辟存储空间,存放它们的值。应该留多大的地方来存放其值? 数据 5 和 3.14 与 r、area 不同,它们是在编写程序时就给出确定的值,在运算过程中不会改变。这样的数计算机怎么处理? 对整数 5 和小数3.14,存放时是否有区别?,涉及数据类型 的基本知识,C语言数据类型,C语言 数据类型,数组类型 结构体类型 共用体类型 枚举类型,整型 字符型 实型(浮点型),基本类型,指针类型,构造类型,空类型,单精度型 双精度型,C语言数据类型,结构体,共用体,数组,枚举,指针,int,char,float,double,void,基本字符,C程序是基本字符的序列。 基本字符包括: 数字(09) 大小写字母(az,AZ) 标点符号 特殊字符:空格、换行、制表符等,起分隔的作用。增删空白一般不影响程序的意义,标识符,标识符是一个字符序列,用来标识程序中用到的常量、变量、函数、数组、语句标号以及符号常量等的名称。标识符应满足以下规则: 只能由字母、下划线和数字组成 第一个字符不能是数字 标识符中的字母区别大小写 不能使用C语言的关键字,关键字,关键字:C语言规定的具有特定意义的字符串,通常也称保留字(小写字母),auto break case char const continue default do double else enum extern float for goto if int long register return short signed sizeof static struct switch typedef union unsigned void volatile while,基本数据类型,整型 int 整数,在目前绝大多数机器上占4个字节 单精度实型 float 单精度浮点数,一般是4个字节长 双精度实型 double 双精度浮点数,一般是8个字节长,基本数据类型,字符型 char 字符,一般是1个字节长, 用来表示256个ASCII字符,或者-128127的整数,基本数据类型,在基本数据类型之前都可以加各种类型修饰符 short short int,短整数,一般2个字节,简写 short long long int,长整数,一般4个字节,简写 long long double,长双精度浮点数,一般10个字节,基本数据类型,signed 用来修饰char、int、short和long,说明他们是有符号的整数(正整数、0和负整数)。一般缺省都是有符号的,所以这个修饰符通常省略 unsigned 用来修饰char、int、short和long,说明他们是无符号的整数(正整数和0),基本数据类型,10-30810308,double,64,8,基本数据类型、字节长度、位数、数据范围,10-381038,float,32,4,有,实 型,04294967295 0232-1,unsigned long int,32,4,04294967295 0232-1,unsigned int,32,4,065535 0216-1,unsigned short int,16,2,0255 028-1,unsigned char,8,1,无,-231231-1,long int,32,4,-231231-1,int,32,4,-3276832767 -215215-1,short int,16,2,-128127 -2727-1,char,8,1,有,整 型,数据范围,数据类型标识符,位数,字节,符号,基本数据类型,占字节数 随机器不同而不同 可用下面运算测量: sizeof (数据或数据类型符或变量名) 求出的结果为表达式值所属类型占用的字节数,C语言数据类型,例2.2:基本数据类型占用字节数,#include void main () printf(“char %d n“, sizeof(char); printf(“short %d n“, sizeof(short); printf(“int %d n“, sizeof(int); printf(“long %d n“, sizeof(long); printf(“float %d n“, sizeof(float); printf(“double %d n“, sizeof(double); ,基本数据类型,数据在内存中的存储格式 字符型:ASCII码值 整 型:二进制补码 实 型:浮点数指数形式 N = S2j,基本数据类型,整型数据在内存中是以二进制补码形式存放 正整数 short int i = 10; int在内存中占2个字节,最高位为符号位 正整数的原码、反码、补码相同 符号位为0,数值为对应的二进制数 10补码 = 0 000 0000 0000 0101,基本数据类型,负整数 short int i = -10; 负整数原码、反码、补码的符号位均为1 原码的数值为绝对值的二进制数 反码的数值为原码按位取反 补码的数值为反码末位加1 -10原码 = 1 000 0000 0000 1010 -10反码 = 1 111 1111 1111 0101 -10补码 = 1 111 1111 1111 0110,基本数据类型,实型在内存中是按浮点数指数形式存放的 把实型数据分成小数部分和指数部分,分别存放 小数部分位数愈多,有效数字就越多,精度愈高 指数部分位数越多,则能表示的数值范围就越大,基本数据类型,如实数 31.4159 的指数形式为:0.314159*102 ,它在内存中的存放形式可以表示为,基本数据类型,上图用十进制表示,实际在计算机中是用二进制来表示小数部分,用2的幂次来表示指数部分,常量,常量:在程序的执行过程中,其值不发生改变的量,在C程序中可以不经说明而直接引用 常量的分类: 整型常量 实型常量 字符常量 字符串常量 符号常量,整型常量,整型常量即整常数 十进制:09,无前缀 八进制:07,以0作为前缀 十六进制:09,AF或af,以0x或0X为前缀 例如: 100 -8 0 +123 010 024 0100 073 0x38 0x10 0x0a 0X10 0XFF,整型常量,整型常量的取值类型 默认类型为有符号基本整型 整型常量后面加u或U,则认为是无符号整型(unsigned int) 整型常量后面加l或L,则认为是长整型(long int) 例如:123U、345u、432L、200l,实型常量,实型(浮点型)常量的表示方法 十进制小数形式:1.0 0 .15 +12.0 -12.0 0.0 指数形式:a E n 或 a e n 1e3 1.8e-3 -123E-6 -0.1E-3 1103 1.810-3 -12310-6 -0.110-3 float型常量: 123.45f、 456.78F 缺省为double,字符常量,字符常量 用一对单引号括起来的单个可视字符 例如:a、 A、+、3、 等 字符常量用char表示,分配 1 Byte存储单元 例如a是一个char类型数据,称作字符常量,字符常量,转义字符常量 单引号括起来的 与可视字符组合,例如:,字符串常量,字符串常量是用双引号括起的一个字符序列 例如:“ABC“、“123“、“a“、“nt “ “nGood morning“ 字符串常量的长度:所包含的字符个数 字符串所占存储单元数:字符串长度1,字符串 结束标记,符号常量,符号常量:用标识符来表示的常量 需要事先定义:#define 标识符 常量 编译时先由系统替换为它所代表的常量 符号常量名习惯用大写字母表示 使用符号常量的好处是: 1. 含义清楚 2. 在需要改变一个常量时能做到“一改全改”,C语言数据类型,例2.3:圆的半径为5cm,计算圆的面积并输出,#include #define PI 3.14159 void main() float r, area; r = 5; area = PI*r*r; printf (“%f n“, area); ,变量,变量:在程序执行过程中其值发生改变的数据 变量四要素:变量名、类型、变量值、存储单元 变量必须先定义,后使用 存储单元的地址使用&获取,变量值 a = 510,存储单元 &a,变量名 a,变量,定义变量的一般形式: 类型说明符 变量1, 变量2,, 变量n ; 例如:int a, b, c; char c1, c2; 选变量名时,要做到见名知意 例如:name age sum max 变量名习惯用小写字母表示,整型变量,有符号整型变量类型,为缺省变量类型,可以省略修饰符signed 基本型 int, 占4个字节(32位) 长整型 long int,占4个字节(32位) 短整型 short int,占2个字节(16位),整型变量,无符号整型变量类型,类型修饰符为unsigned 基本型:unsigned int或unsigned,占4个字节 长整型:unsigned long,占4个字节 短整型:unsigned short,占2个字节,整型变量,一个 short int 型变量的最大允许值为:32767,如果再加1,则结果会变成 -32768 a = 32767 0 111 1111 1111 1111 b = -32768 1 000 0000 0000 0000 整型变量最高位是符号位还是数据位的区别 a = -1 1 111 1111 1111 1111 b = 65535 1 111 1111 1111 1111,整型变量,例2.4:整型变量的溢出,#include void main() short int a, b; a = 32767; b = a+1; printf(”%d,%d n”, a, b); ,整型变量,例2.5:整型变量符号位和数据位的区别,#include void main() short int x = -1; unsigned int y; y = x; printf(“%d, %d, %u n”, x, y, y); ,实型变量,实型变量的类型 单精度实型: float,占4个字节 双精度实型: double,占8个字节 VC的“数值范围”和“有效位数”请参考系统头文件float.h中的宏定义,实型变量,由于实型变量是用有限的存储单元存储的,因此能提供的有效数字总是有限的,在有效位以外的数字将被舍去,由此可能会产生一些误差,实型变量,例2.6:实型变量有效数字的意义,#include void main() float a, b; a = 123456.789e5; b = a+20.0f; printf(“a=%f n b=%f n”, a, b); ,实型变量,输出结果是a与b相等 虽然理论上b应比a大20,应为12345678920。而实型变量只能保证7位有效数字,后面数字是无意义的,并不准确地表示该数 因此应避免将一个很大的数和一个很小的数直接相加或相减,否则就会“丢失”小的数 同样,计算1.0/3.0*3.0的结果并不等于1,字符变量,字符变量定义形式: char 标识符1,标识符2, ,标识符n ; 例如:char c1, c2; char c3=a, c4=b; 字符变量说明: 1. 字符变量在内存中占一个字节 2. 内存存放的是字符的ASCII码值 3. 字符型数据与整型数据之间可以通用 4. 字符型变量用来存储字符型常量,字符变量,例2.7:一个字符变量可以字符或整数形式输出,#include void main() char c1, c2; c1 = 97; c2 = 98; printf(”%c %c n”, c1, c2); printf(”%d %d n”, c1, c2); ,字符变量,例2.8:字符变量算术运算,如字母大小写转换,#include void main() char c1= x, c2 = y; c1 = c1-32; c2 = c2-32; printf(“c1=%c, c2=%c n”, c1, c2); printf(“c1=%d, c2=%d n”, c1, c2); ,第二章 基本数据类型及运算,C语言基本数据类型 C语言运算符和表达式 C语言格式输入输出函数 C语言字符输入输出函数,C语言运算符与表达式,用来表示各种运算的符号称为运算符 只需一个运算对象的运算符,称为单目运算符;有的需要两个,称为双目运算符;最多需要3个,称为三目运算符 用运算符把运算对象连接在一起组成的式子,称为表达式 每种表达式按照运算符的运算规则进行运算,最终都会得到一个结果,称为表达式的值,C语言运算符与表达式,表达式中有多个运算符时,先做哪个运算,后做哪个运算,必须遵循一定的规则,这种运算符执行的先后顺序,称为运算符的优先级。圆括号能改变运算的执行顺序 对于优先级相同的运算符,将由其结合性来决定运算顺序。C语言中有两种结合性:所谓左结合,是自左向右的,意即由左向右遇到谁就先做谁;所谓右结合,是自右向左的,意即由右向左遇到谁就先做谁,C语言运算符与表达式,算术运算符和算术表达式,算术运算符分为 基本算术运算符 正负号运算符 自增/自减运算符,算术运算符和算术表达式,基本算术运算符: + - * / % 两个整数进行算术运算结果还是整数 整除:5 / 3 = 1 取余:5 % 3 = 2 无乘方运算符,要计算a3要写作 a * a * a ,或者用标准库函数 pow(a, 3),算术运算符和算术表达式,自增、自减运算符: + - 前缀形式:先自增(自减)再引用 +a a = a + 1 -a a = a - 1 后缀形式:先引用再自增(自减) a+ a = a + 1 a- a = a - 1,算术运算符和算术表达式,自增、自减运算符: + - 在自增、自减运算符与赋值运算符同时使用时,前缀形式与后缀形式是有区别的 1. b = +a a = a+1;b = a 2. b = a+ b = a; a = a+1 3. b = -a a=a-1;b=a 4. b = a- b = a; a = a-1,算术运算符和算术表达式,例2.8:计算自增运算符+a、a+的值,#include void main() int a = 5 , b; b = +a ; printf(“a=%d, b=%d n”, a, b); b = a+; printf(“a=%d, b=%d n”, a, b); ,算术运算符和算术表达式,例2.10:计算自减运算符-a、a-的值,#include void main() int a = 5,b; b = -a; printf(“a=%d, b=%d n“, a, b); b = a-; printf(“a=%d, b=%d n“, a, b); ,算术运算符和算术表达式,自增、自减运算符: + - 操作数只能是变量,不能是常量和表达式 例如: 5+、(a+b )+ 不合法 具有右结合性,结合方向为从右到左 例如: a+ -(a+),算术运算符和算术表达式,用算术运算符将数值数据连接起来的有意义的式子称为算术表达式 乘号*不能省略。例如:数学式 b2-4ac 应该写成:b*b-4*a*c 不允许有分子分母的形式。例如:(a+b)/(c+d) 只使用圆括号改变运算的优先顺序,赋值运算符和赋值表达式,简单赋值运算符:= 形式:变量名 = 常量或表达式 作用:将右边常量或表达式的值赋给左边变量 = 左边必须是变量,右边是任意合法表达式 例如:n = t+2 s 合法 a+b = 15 不合法 赋值号与数学中的等号含义不同 数 学 a=b 等价于 b=a C语言 a=b 不等价于 b=a,赋值运算符和赋值表达式,赋值操作会发生类型转换:将取值范围小的类型转为取值范围大的类型是安全的 将实型赋给整型,舍去小数部分 将整型赋给实型,小数部分自动补0 将字符型赋给整型,将字符的8位,放在整型的低8位,其余各位补零 将int、short、long型赋给char型,只将其低8位原封不动地送到char型中,赋值运算符和赋值表达式,复合赋值运算符 += -= *= /= %= (复合算术运算符) 例如:a+=3 a=a+3 ; x*=y+3 x=x*(y+3),关系运算符和关系表达式,关系运算符: (大于), =(大于或等于) =(等于), !=(不等于) 双目、左结合,关系运算符和关系表达式,所谓关系表达式是指用关系运算符将两个表达式(算术表达式、关系表达式等)连接起来,进行关系运算的式子 如:(ab)(b= y 关系表达式的值: 逻辑值 1 - “真”, 0 - “假”,关系运算符和关系表达式,要特别区分符号“=”和符号“=” 符号“=”是关系运算符,表示检验左右两个量之间是否具有“等于、相等”的关系 符号“=”是赋值运算符,表示把右边的表达式值赋给左边的变量 应避免对实数作相等或不等的判断 如 1.0/3.0*3.0 =1.0 结果为 0 可改写为:fabs(1.0/3.0*3.0-1.0)1e-6,条件运算符和条件表达式,条件运算符: ? : 格式:表达式1 ? 表达式2 : 表达式3 其中,是一个逻辑表达式,和的类型必须相同 该条件表达式是先计算的值,若值为真,则以的值作为自己的值;若其值为假,则以的值作为自己的值,条件运算符和条件表达式,例2.11:求最大值,#include void main() int max,a=5,b=9; max=(ab)?a:b; printf(“max=%d n”, max); ,逻辑运算符和逻辑表达式,C语言的逻辑运算符及其含义 ! a 当且仅当a为真时,!a为假 a&b 当且仅当 a、b 同真时, a&b为真 a|b 当且仅当a、b之一为真时,a|b为真,逻辑运算符和逻辑表达式,逻辑运算规则 在判断一个逻辑量时,以0为假,非0数值为真 在给出逻辑运算值时,以1为真,以0为假,逻辑运算符和逻辑表达式,任何值与0相与( & ) ,结果为0 对于 & 运算符,只要左边的运算对象为假,则整个表达式肯定取值“假”(数值0),C编译程序不再对右边的运算对象进行求值 任何值与1相或( | ) ,结果为1 对于 | 运算符,只要左边的运算对象为真,则整个表达式肯定取值“真”(数值1),C编译程序不再对右边的运算对象进行求值,逻辑运算符和逻辑表达式,例2.12:逻辑表达式的计算,#include void main() int m=20,t1,t2,t3; char c=t; t1=(0=m) ,逻辑运算符和逻辑表达式,例2.13:逻辑表达式的计算,#include void main() int x, m, n, a, b; m = n = a = b = 10; x = (m = ab) ,逻辑运算符和逻辑表达式,输出结果应该是:x = 0, m = 0, n = 10 变量m、n、a、b的初值都是10 赋值语句:x = (m = ab ) 是把左边ab赋给变量m;右边把ab赋给变量n,最后把(m = ab ) & (n = ab) 赋给变量x 计算左边ab不成立,变量m=0。既然&左边已取值假,于是就不再去计算&右边,而直接把逻辑值0赋给变量x。所以,变量n仍保持初值10,逗号运算符和逗号表达式,所谓逗号运算符,就是把逗号作为运算符,把若干个表达式连接在一起。这样构成的表达式的整体,称为逗号表达式 格式:表达式1,表达式2,表达式n 从左向右,依次对表达式求值,最后得到表达式n的值就是逗号表达式的值 a=5, a+, a*3 表达式值为 18,且a=6 x=(a=3*5, a*4 ) 表达式值为 60,且x=60, a=15,第二章 基本数据类型及运算,C语言基本数据类型 C语言运算符和表达式 C语言格式输入输出函数 C语言字符输入输出函数,输入输出函数,标准输入输出函数都包含在头文件stdio.h中 #include “stdio.h ” 或 #include ,格式输入输出函数,格式输出函数printf() printf (,); 是用双引号括起的一个字符串常量,里面有要求函数原样输出的字符,以及规定数据输出时采用的格式 列出了需要输出的变量名(或表达式),正是变量的值要按照格式要求进行输出 例如 printf(“c=%d+%d=%d n“,a,b,a+b),格式输入输出函数,printf()函数中最常用格式符,格式输入输出函数,在printf()格式符前,还可加附加格式符,以得到更多的格式输出信息,格式输入输出函数,例2.13: printf()函数中最常用格式符,#include void main() unsigned int a=65535; short int b=-2; printf(”a=%d,%o,%x,%u n”, a,a,a

温馨提示

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

评论

0/150

提交评论