第3章最简单的C程序设计——顺序程序设计.ppt
《第3章最简单的C程序设计——顺序程序设计.ppt》由会员分享,可在线阅读,更多相关《第3章最简单的C程序设计——顺序程序设计.ppt(95页珍藏版)》请在三一文库上搜索。
1、C 程序设计,数据类型,运算符和表达式,数据类型、常量, 变量的定义 运算符的种类、优先级和结合方向 表达式的类型和求值 简单的C程序设计及基本输入输出,C的数据类型 (Data Types),基本类型 整型、字符型、浮点型(实型)、枚举类型 构造类型 数组类型、结构体类型、共用体类型 指针类型 空类型,数据类型、常量和变量,一个程序的算法设计必须考虑数据结构 数据结构是各种类型数据的组织形式 C语言的数据有常量和变量之分 常量和变量都分别属于某一数据类型 程序中用到的所有数据都具有一定类型,常量 (Constants),常量 程序运行过程中,其值不能被改变的量 例如:12、-6.7、a 符号
2、常量 (Symbolic Constants) 用一个标识符代表的常量, 相当于用标识符把一个常量 替换下来 习惯上符号常量名用大写字母 优点: 含义清楚直观; 修改时一改全改,#define PRICE 30 #define NUM 12 int main() . . total = NUM * PRICE; total2 = 84 * PRICE2; printf(“total=%d“, total); . . ,常量示例,不会被替换,= total = 12 * 30;,常量,符号常量,变量 (Variables),其值可以改变的量称为变量 变量有一个名字,即标识符 变量在存储器中占据一
3、定的存储单元 变量占据存储空间的大小由其类型决定 程序中的变量参与计算时,从这个变量所占据的存储单元里取出存储的数据的值 变量要“先定义,后使用”,标识符 (Identifier),标识符 变量名、符号常量名、函数名、类型名 标识符命名规范 由字母、数字、下划线(Underscore, _)组成 第一个字符必须为字母或下划线 C语言标识符是大小写敏感的 标识符的名称一般应具有一定的含义 不要与C语言关键字(Keywords)重复 一般不要使用以下划线开头的标识符,ANSI C共有32个关键字,标识符示例,正确的标识符 student、num1、_SUM、_1_2_3 MyName、myname
4、、my_name 错误的标识符 room3-1 包含了其他字符(减号) 2men 以数字开头 long 与关键字重复 Mr.Zhu 包含了其他字符(小数点),变量的存储,变量名,存储单元(地址),变量值,整型 (Integer),整型常量的表示方法 整型变量 整型数据在内存中的存放形式 整型变量的类型 整型变量的定义 整型数据的溢出 整型常量的类型,整型常量的表示方法,十进制 (Decimal) 例如,123、-456、0 八进制 (Octal) 以0开头,不得含有8或9 例如,0123、-0456 错例,0138、-0912 十六进制 (Hexadecimal) 以0x或0X开头,用af或A
5、F表示1015 例如,0x123、-0X45、0x3AB、-0xabc,整型数据在内存中的存放方式,二进制形式 举例,int i=50; /*int类型占2字节*/ 补码 (Complement) 正数:与原码一致,首位为0 负数:绝对值取反加一,首位为1 零:各位全为0,补码举例,举例 int i=-50; /*int类型占2字节*/,50的原码,-50的补码,整型变量的分类,按占用存储空间的大小划分 基本整型 int 短整型 short int 长整型 long int 按有无符号划分 有符号 signed 无符号 unsigned 上述两种分类方式组合,可得到6种类型,整数的长度,整数的
6、类型与长度 教材p43 short:占2字节(16bit) long: 占4字节(32bit) int: 占2或4字节(16或32bit) 2Bytes = short int long = 4Bytes 若需要精确的长度,可选用short或long 举例 BC3.1: int长度为2Bytes gcc: int长度为4Bytes 数据长度由编译器指定,而编译器的设计受处理器的限制。,有符号数与无符号数,有符号数 二进制补码表示,首位为符号位 指定signed或缺省情况,即为有符号数 无符号数 没有符号位,只能表示非负数 无符号数类型必须指定为unsigned 若把负数赋值给无符号数,则把该负
7、数的补码当作无符号数进行处理,有符号数与无符号数举例,int main() int i; unsigned j; i=j=-50; i=i/2; /*-25*/ j=j/2; /*32743*/ /*除以2相当于右移1位*/,整型数据的取值范围,整型变量的定义 (Definition),定义形式 int a, b; unsigned c; long d; unsigned short e; 变量的定义一般放在一个函数开头的声明部分,关于变量定义的具体内容在以后相关章节里详细介绍,整型变量的定义与使用举例,int main() int a; /*定义有符号基本整型变量a*/ unsigned b
8、; /*定义无符号基本整型变量b*/ long c; /*定义有符号长整型变量c*/ a = -23; /*a的值为-23*/ b = 45; /*b的值为45*/ c = a + b; /*c的值为22*/ ,整型数据的溢出 (Overflow),溢出 数据超出了变量能够存储的范围,造成数据丢失或数值改变等 举例 (假定int类型数据用16位表示):,int main() int a = 32767; a+; /*32768?*/ ,32767的补码,-32768的补码,整型常量的类型,常量的类型后缀 (Suffix) l、L 表示常量是一个长整型 u、U 表示常量是一个无符号整型数 两种后
9、缀可以一起使用 举例 123l 长整型常数123 456U 无符号整型常数456 789ul 无符号长整型常数789 101Lu 无符号长整型常数101,整型常量使用中的类型问题,对整型变量赋值 常量的值不要超过变量的取值范围 直接使用常量 带有l、L、u、U等后缀的整型常量一般用于函数调用 不带有后缀的整型常量的类型,是根据其数值大小所处的范围来确定的,浮点型 (Floating Point),浮点型常量的表示方法 浮点型变量 浮点型数据在内存中的存放形式 浮点型变量的类型 浮点型数据的舍入误差 浮点型常数的类型,浮点型常量的表示方法,十进制小数形式 由符号、数字和小数点(必须)组成 整数和
10、小数部分都可省略,但不能同时省略 举例,12.3、-.123、123.、0.、.0 指数形式 由整数(或小数)、e(或E)、整数顺序组成 e或E之前必须有数字,之后必须是整数 举例,123.4e-5表示123.410-5 错例,e1、12e、1.2e3.4、.e5、e,规范化指数形式,规范化指数形式 类似于“科学计数法” e或E之前的小数中,小数点前面有且仅有一个非零数字 举例,123.456 规范化形式,1.23456e2、1.23456E+002 非规范化形式,123.456、12.3456e1、12345.6e-2、0.123456e3、12345600e-5,浮点型数据在内存中的存放方
11、式,二进制规范化指数形式 小数部分长度与能表示的精度有关 指数部分长度与能表示的数值范围有关,浮点型变量的类型,分类 单精度 float 双精度 double 长双精度 long double 长度和取值范围,浮点型数据的舍入误差,由于浮点型变量能够表示的有效数字有限,将有效位以外的数字舍去造成误差 举例,float a=123456.789e5, b; b = a + 20; /*b=12345678920?*/ printf(“a=%fnb=%fn“, a, b);,运行结果 a=12345678848.000000 b=12345678848.000000,浮点型常量的类型,类型后缀 f
12、、F 表示常量是一个单精度型浮点数 l、L 表示常量是一个长双精度型浮点数 无任何后缀的浮点型常量视作双精度型 对浮点型变量赋值 一个浮点型常量可以赋值给任何类型的浮点型变量 根据变量类型截取常量的相应有效数字 注意防止出现溢出,字符型 (Character),字符型常量 字符型变量 字符型数据在内存中的存放形式 字符型数据的使用方法 字符串常量,字符型常量,单引号括起来的一个字符 举例,a、A、1、? 错例,abc、我 转义字符 以开头的特殊字符 ddd 1到3位8进制数ASCII码代表的字符 xhh 1到2位16进制数ASCII码代表的字符 举例,n、t、“、123、x3A,字符型变量,字
13、符型变量只能存放一个字符 定义与使用:,int main() char c1, c2; /*定义字符型变量c1和c2*/ c1 = a; /*c1的值为a*/ c2 = 2; /*c2的值为2*/ ,一个字符型数据占一个字节的空间 字符型数据以其ASCII码(P.364)形式存放 字符型数据的存放形式与只占一个字节长度的整型数据完全相同,字符型数据在内存中的存放形式,字符型数据的使用方法,可以把字符型数据视作一种长度为1字节的整型数据处理 当使用字符型数据时,与使用这个字符的ASCII码(一个8位整数)是完全一样的 字符型数据的用法与整型数据完全一样,包括运算、赋值、输入、输出等 字符型数据使
14、用过程中,同样需要注意溢出、符号等问题 是字符还是整数,只有在输出时才有意义,字符型数据使用举例,int main() char c; int i, j; c = 97; /* 同 c = a*/ i = c + 20;/* 同 i = 117*/ j = 2; /* 同 j = 50*/ printf(“%c, %dn“, c, c); /*a, 97*/ ,字符型变量的符号,字符型变量与整型变量一样,也分为有符号数与无符号数 无符号字符 unsigned char c; 举例,表示一个班级的人数 (256) 赋值和使用中需要注意的问题,与整型变量相同,字符串(String)常量,表示形式
15、一对双引号括起来的字符序列 引号内可以包括0个、1个或多个字符 字符序列中的特殊字符用转义字符表示 举例,“abc“、“a“、“、“、“我“ 举例,“12.4“、“$#*!“、“C:HOME“ 字符常量和字符串常量是不同类型的数据 例如,a与“a“是不同的 不能把一个字符串赋值给一个字符型变量,字符串在内存中的存放方式,在内存中每个字符按顺序存放 字符串结尾有一个空字符 ( ASCII=0, 0)作为字符串结束标志 字符串结束标志0是不能显示的,在字符串常量中,也不用显式写出来 举例 “TEST“ “ “a“,变量赋初值 (Initialization),在定义变量的同时对变量赋值(初始化)
16、举例 int a=1; /*相当于 int a; a=1;*/ int a, b=3; /*对b赋初值,a没有初值*/ int b, c, a=b=c=100; /*对三个变量赋同样的初值*/ 变量使用前,一般应先对它赋值,各类数值型数据间的混合运算 及类型转换,整型、字符型、浮点型数据可混合运算 混合运算时,不同类型的数据按照一定的规则先转换为同一类型,然后再运算,运算符 (Operator),运算符的种类 运算符的优先级 运算符的结合方向,运算符的种类 (1),算术运算符 + - * / % + - 关系运算符 = | & 赋值运算符 = += -= *= /= %= = = &= = |
17、= 条件运算符 ?:,运算符的种类 (2),逗号运算符 , 指针运算符 * & 求字节数运算符 sizeof 强制类型转换运算符 (type) 分量运算符 . - 下标运算符 其他运算符 (),运算符的优先级,优先级 运算符的运算次序按优先级由高到低执行 可以用圆括号( )改变运算符的执行次序 举例 a+b*cd/e 计算顺序: (a+(b*C)-(d/e) /*先算乘除,后算加减*/ /*乘除比加减优先级高*/ (a+b)*(c-d)/e /*先算加减,后算乘除*/,运算符的结合方向,结合方向 当一个操作数两侧的运算符优先级相同时,运算次序按照结合方向的规定进行 举例 a+b-c /*+和-
18、的结合方向都是从左向右*/ /*b先与+结合计算a+b,然后执行减法*/ a=b=1 /*=的结合方向是从右向左,先计算b=1*/,运算符的结合方向规则,单目运算符的结合方向都是“从右向左” !、+、-、+(正号)、-(负号) *(指针运算符)、&(地址运算符) sizeof(type) 赋值运算符的结合方向是“从右向左” 三目运算符的结合方向是“从右向左” 唯一的三目运算符:条件运算符?: 其他运算符的结合方向都是“从左向右”,优先级与结合方向总结,不同优先级的运算符,运算次序按优先级由高到低执行 同一优先级的运算符,运算次序按结合方向的规定执行 可以使用圆括号( )明确运算次序 圆括号()
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 简单 程序设计 顺序
链接地址:https://www.31doc.com/p-3426593.html