已阅读5页,还剩28页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第3章 数据类型和表达式 程序就是对数据的处理 3.1 C语言的基本数据类型 数据类型数据类型 构造类型 指针类型 空类型 voidvoid 数组类型 结构体类型 structstruct 共用体类型 unionunion 基本类型基本类型 字符类型字符类型 char char 数值类型数值类型 整型类型整型类型 intint及其它及其它 实型类型实型类型 floatfloat,doubledouble及其它及其它 C语言的数据类型有 枚举类型 关于基本数据类型 1.数据类型确定了允许对其进行的操作。 2.不同类型数据在内存中占不同的存储空间,且采取不同的存储 形式。 3.不同类型数据对应不同的取值范围。 基本类型基本类型 字符型字符型: :char char 实型实型: :float,double,long doublefloat,double,long double 整型整型: :intint,short,long,unsigned,unsigned ,short,long,unsigned,unsigned short,unsigned longshort,unsigned long 3.1.1 常量、变量的表示方法 l按照数据在程序中的取值:值保持不变-常量,值随 程序运行变化-变量 1、常量 在程序运行中,其值保持不变。 直接常量(字面常量): 100,125,-100 3.14 , 0.125 a, b 符号常量: #define PI 3.14159 用指定的标识符表 示某个常量 #define 预处理命令宏定义命令:把标识符定义为其后内容的替换 例:常量与符号常量 #include #define PI 3.14159 void main() printf( “圆的半径为%d “ , 3 ); printf( “圆的周长为%f “ , PI*2*3 ); printf( “圆的面积为%f “ , PI*3*3 ); 思考:用符号常量的好处? 圆的半径为3 圆的周长为18.849540 圆的面积为28.274310 2、变量 l在程序运行中,值可以变化 l必须先定义(声明),再使用 l定义变量要指出类型和变量名 l变量定义放于函数开头,可执行语句之前 变量定义会在内存分配相应存储空间变量定义会在内存分配相应存储空间 uu变量名:变量在内存中的位置变量名:变量在内存中的位置 uu类型:变量在内存中占据存储单元大小类型:变量在内存中占据存储单元大小 int a,b; 类型 变量名表 memory a8256 3 变量命名:合法的标识符(字母和下划线开头,字母、下划 线、数字组成) 不能用保留字 区分大小写 变量名应有意义 l变量的使用:赋值、引用。 方式:通过变量名来存、取变量。 memory a8256 3 int a=3; a=256; int b; b = a; #include #define PI 3.14159 void main() int r=2; float g,a; g=2*PI*r; a=PI*r*r; printf(“半径%d的圆,其周长为%f,其面积为%f“,r,g,a); 10进制:10,-23,89。 8进制: 017-(17)8,相当于10进 制数的15; -011相当于10进制数9; 019是错误的整数常量, 因为9不能作为8进制数 的数位值。 16进制: 0x18实际上是(18)16, 相当于10进制数的24。 3.2 整型数据 3.2.1 整型常量 lC语言中提供了3种表示整数常 量的方法: l10进制整数 l8进制整数:以数字0开头的数 是8进制数。 l16进制整数: 以0x或0X开头 的数是16进制数。 l有了上面3种整数表示方法, 我们可以这样定义整数的符号 常量: # #definedefine NUM1 30 NUM1 30 #define#define NUM2 026 NUM2 026 #define#define NUM3 0x1a NUM3 0x1a 常量NUM1的值是30, 常量NUM2的值是22, 常量NUM3的值是26 3.2.2 整型变量 定义格式:类型标识符 变量名列表;分号结尾 例如:int a; 如果想一次定义多个整型变量,可以这样: int a , b , c; 变量间用逗号分隔 上面一行定义等价于下面3行,但形式却简洁一些 : int a; int b; int c; 3.2.3 整型数据的分类和存储 1、分类 整型变量的基本类型符是int。 在int前面增加两类修饰符: lsigned和unsigned(控制整型变量是否有符号) lshort和long(控制整型变量的值域范围) 这样就形成了6类整型变量: 类型说明符类型说明符 长度长度 数的范围数的范围 基本型基本型 intint 2 2字节字节 -32768 -327683276732767 短整型短整型 short short intint 2 2字节字节 -2-215 15 2 2 1515-1 -1 长整型长整型 long long int int 4 4字节字节 -2-231 31 2 2 3131-1 -1 无符号整型无符号整型 unsigned unsigned int int 2 2字节字节 0 06553565535 无符号短整型无符号短整型 unsigned short unsigned short int int 2 2字节字节 0 06553565535 无符号长整型无符号长整型 unsigned long unsigned long int int 4 4字节字节 0 0(2 232 32-1 -1) 2、存储 void main() int i=11; short j=11; long k=11; unsigned int ui=11; unsigned short uj=11; unsigned long uk=11; int m=-11; 0000000000001011 0000000000001011 00000000000000000000000000001011 0000000000001011 0000000000001011 00000000000000000000000000001011 1111111111110100 1111111111110101 整数在内存用二进制补码表示(有符号数) 计算机中规定对于有符号数,最高位充当符号位(0为正,1为负) ,其他位用来存放数据。 一个整数的绝对值的2进制表示称为这个数的原码。 一个正整数和零的补码就是原码本身。 但一个负数的补码是它的原码取反加1的结果。 void main() int x,y; x=32767; y=x+1; printf( “%d, %d”, x, y); 3、sizeof运算符 测定数据类型所占存储空间(字节数) sizeof (类型标识符) sizeof (变量名) 4、整型数据的溢出 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -32768 3.3 实型数据 3.3.1 实型常量 l两种表示方式 l10进制小数形式: 数字和小数点组成 。 l指数形式:小数部 分,e,指数部分 组成 3.3.2 实型变量 l变量定义格式与书写 规则同整数 float a,b; 如:1.2、33.24、0.0 若整数部分为0可以省去,只保 留小数点和小数部分,但绝对不 能没有小数点。 如: .24、 .2等等。 如:123.4e2 注意,e或E前面必须有数字,后 面必须是整数! 错误形式:e3、.e5、12e3.5 3.3.3 实型数据的分类和存 储 1、分类 l单精度float 4字节 l双精度double 8字节 l长双精度long double 16 字节 float f=2.14; double x, y; long double a; 2、存储 但实数在内存是按照指数形式存放的。 符号位 小数部分指数部分 1位 决定有效数字 决定取值范围 类型 长度 数的范围 有效数字 单精度 float 4 10-37 1038 6-7位 双精度 double 8 10-307 10308 15-16位 长双精度 long double 16 10-4931-104932 18-19 3.4 字符型数据 3.4.1 字符常量 lASCII字符集 l表示方法: l可显示字符:通常就用单引号引起来表 示 l不可显示字符:转义序列表示法:+指 定字符 l也可以用一般转义序列表示所有字符: 000 000表示1-3个八进制数 或x00 00表示1-多个十六进制数 a /字符a /字符 4 /字符4 /空格字符 n /换行符 r /回车符 07 /响铃符 62 /2 x61 /a 3.4.2 字符变量 类型:char char a=c; 3.4.3 类型与存储 1、类型与长度 char 1字节 2、内存表示 内存放字符的ASCII码 故:字符常量、变量可以其ASCII码值参与运算 void main() char a=A; printf(“%c”,a); 3.4.4 字符串常量及内存表示 字符串没有对应的类型,其实际是字符数组 l表示方法: l用双引号括起的字符序列(0个或多个字符) 。 l其中不可显示字符由相应转义序列表示 l组成:除显式给出的字符外,还包括字符结尾处标识字符串结束 的符号0 字符串“abc”在内存中的存放形式 字符串常量 a /占两个字节, 存放a和 0, 值为0x6100 字符型常量 a /占一个字节, 存放a, 值为0x61 abc0 3.5 运算符和表达式 l表达式 l表达式由运算符、运算对象(也称操作数)、括号组成。 l执行表达式的运算,所得结果值便是表达式的值。 l表达式定义 n一个常量或变量是最简单的表达式,其值是常量或变量的值。 n表达式的值可以用来继续参与运算,以形成更复杂的表达式。 n包含在括号中的表达式仍是一个表达式,其类型与值与未加括号 一致。 l运算符 l一元运算符、二元运算符、三元运算符 l运算符具有优先级和结合性(决定了表达式运算的优先关系) l优先级:指不同运算符在运算中的优先关系 l结合性:决定同优先级的运算符对操作数的运算次序 3.5.1 算术运算符和算术表达式 1、算术运算符 lC语言的算术运算符 l单目:-,+ l双目:+,-,*,/,% l操作数: l注意: l两个整数相除的结果是整数。如果商含小数部分将被截掉 。 l(%)求余数,不能用于实型。 l浮点数运算会产生精度问题(受底层数据类型的固有精度 影响,产生浮点舍入) l字符类型数据可以参与算术运算,以它的ASCII码 2、算术表达式 l由常量、变量、函数和算术运算符组合起来 的式子 l表达式的值 算术运算符的优先级与数学中相同 3.5.2 关系、逻辑运算符与条件运算符 1、关系运算符 (1)关系运算符 l对两个操作数比较 =, void main() int x; int y; scanf(“%d“, y=x0; printf(“%d,%d“,x,y) ; =,!=的优先级低于其余四个 关系运算的优先级高于赋值,低于算术 2、逻辑运算符 (1)逻辑运算符 对真假值进行逻辑操作 结果为真、假 ! a=3; b=6; max=ab?a:b; 条件运算符优先级高于赋值,低于其他 3.5.3 自增、自减运算符 l单目运算符:+、- l作用:变量加1、减1操作 int i=5; i=i+1; i+; i=i-1; i-; l只能用于变量,不能用于表达式、常 量 l两种应用形式 l前缀 +i : i先加1,在使用i l后缀 i+ :先使用i,i再加1 l若作为单独的表达式,前缀后缀形式 没有区别,但若作为其他表达式(语 句)的一部分则注意区别。 i+;/* i=i+1 */ +i; /* i=i+1 */ void main() int a,b,i; i=5; a=i+; b=+i; 单目运算符优先 级高于双目 3.5.4 位运算符 针对二进制位的运算 , , float f; double d; long e; j=10+a+i*f-d/e int i=5,j=3; double k; k=5/3; k=(double)5/3 补充:简单的输入输出 输出:printf函数 形式:printf(格式字符串,输出项表) 格式化字符串中包含两种内容 l普通字符:直接输出 l格式指示符:不直接输出(在其位置上显示参数值) l以%开头,如%d,%f 直接输出字符串 printf ( “hello”); printf(“hellonworld!”); 输出整型值 int i=5; printf ( “%d”, i); 格式指示符 类型 输出形式 %d,%i: (int) 有符号10进制表示 %u: (int)无符号10进制表示 %x: (int)无符号16进制表示 %o: (int)无符号8进制表示 加h表示 short 加l 表示 long 输出实型值 double d=2.222; print
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 员工培训管理信息系统方案
- 建筑施工中的环境噪音控制方案
- 新员工培训实施方案
- 市政管网改造施工人员安全防护方案
- 2025浙江宁波城市职业技术学院招聘专任教师7人考试笔试备考试题及答案解析
- 2025甘肃林业职业技术大学招聘工程项目管理人员1人考试笔试模拟试题及答案解析
- 2025河南安阳殷商产业集聚建设投资有限公司招聘10人笔试考试参考题库附答案解析
- 2026年内蒙古阿拉善高新技术产业开发区教育领域紧缺人才引进10人(兰州大学、西北师范大学专场)考试笔试模拟试题及答案解析
- 2025内蒙古呼和浩特市消防救援支队招录政府专职消防员31人笔试考试参考题库附答案解析
- 2025石家庄市晋州招聘社区工作者30名笔试考试参考题库及答案解析
- 公共场所消毒管理制度模版(3篇)
- 七年级道德与法治期中复习-必刷主观题(36题)(解析版)
- 手卫生课件(完整版)
- 《小儿急性白血病》课件
- 2025年黑龙江省普通高中学业水平合格性考试英语试题(含答案无听力原文及音频)
- 《地方铁路运输企业安全生产标准化建设规范》
- 【MOOC】中国天气-南京信息工程大学 中国大学慕课MOOC答案
- 2023年护理人员分层培训、考核计划表
- 湖南省娄底市2023-2024学年六年级上学期数学期中试卷(含答案)
- 光伏发电项目试验检测计划
- 《Python程序设计基础》-课件 项目五 Python 流程控制
评论
0/150
提交评论