C语言程序设计的初步知识.ppt

上传人:max****ui 文档编号:6333800 上传时间:2020-02-23 格式:PPT 页数:38 大小:285.55KB
返回 下载 相关 举报
C语言程序设计的初步知识.ppt_第1页
第1页 / 共38页
C语言程序设计的初步知识.ppt_第2页
第2页 / 共38页
C语言程序设计的初步知识.ppt_第3页
第3页 / 共38页
点击查看更多>>
资源描述
1 第2章C语言程序设计的初步知识 本章要点 标识符命名规则常量和变量基本数据类型常用运算符及表达式运算符的优先级及结合性本章难点 不同类型数据间的混合运算运算符的优先级自增 自减 运算符的使用 2 2 1C语言的数据类型 3 2 2常量 变量和标识符 2 2 1标识符C语言中的标识符可以分为系统定义标识符和用户定义标识符 系统定义标识符关键字关键字是C语言系统使用的具有特定含义的标识符 不能作为预定义标识符和用户定义标识符使用 C语言定义了32个关键字 如表2 1所示 2 预定义标识符预定义标识符也是具有特定含义的标识符 包括系统标准函数名和编译预处理命令等 如scanf printf define和include等都是预定义标识符 4 表2 1C语言中的关键字 关键字必须用小写字母 不允许使用关键字为变量 数组和函数等操作对象命名 5 2 用户定义标识符用户定义标识符用于对用户使用的变量 数组和函数等操作对象进行命名 例如将一个变量命名为a 将一个数组命名为date 将一个函数命名为fun等 用户标识符命名时要注意 1 C语言对英文字母的大小写敏感 即同一字母的大小写被认为是两个不同的字符 例如total与TOTAL是不同的标识符 2 标识符必须由字母或下划线开头 并且除了字母 数字和下划线外 不能含有其他字符 3 标识符的命名要见名知意 即通过变量名就知道变量值的含义 4 标识符的有效长度随系统而异 但至少前8个字符有效 如果超长 则超长部分被舍弃 6 2 2 2常量1 定义 在程序执行期间 其值不可改变的量称为常量2 类型 数值常量例如 5 10 3 14等符号常量即用一个符号代表一个常量例2 1用标识符代表常量 definePI3 1415926main floats r r 5 s PI r r printf f s 7 说明 符号常量必须先定义后才能用它表示一个数值 符号常量的值在其作用域内不能改变 也不能再被赋值 符号常量名习惯用大写字母表示 8 2 2 3变量 1 变量概念 程序执行期间值可以改变的量 命名规则 变量名由标识符表示 只能由字母 数字和下划线三种字符组成 且第一个字符必须为字母或下划线 例如 以下为不合法的变量名 M D Jess 1add age 定义了整型变量a 9 3 变量的初始化C语言允许在定义变量的同时给变量赋值 这称为变量的初始化 变量初始化的一般格式为 数据类型标识符变量名1 初值1 变量名2 初值2 变量名n 初值n C语言允许在定义变量的同时初始化变量 如 inta 2 指定a为整型变量 初值为2 floatf 3 45 指定f为实型变量 初值为3 45 charc A 指定c为字符变量 初值 A 也可以使被定义的变量的一部分赋初值 如 inta 1 b 3 c 10 在C语言中 变量必须强制定义 其目的是 1 凡未被事先定义的 不作为变量名 2 每一个变量被指定为一确定的类型 在编译时就能为其分配相应的存储单元 3 指定每一个变量为一确定的类型 在编译时据此检查该变量所进行的运算是否合法 选变量名时 要做到 见名知意 例如 namest agexmnlclasssum 大小写字母是两个不同的字符 C变量名习惯用小写字母表示 建议变量名的长度不要超过8个字符 注意 11 2 3整型数据 2 3 1整型常量1 整型常量的形式十进制整数 由数字 0 9 和正负号表示例如 123 456 0等八进制整数 以0开头数是八进制数例如 0123即 123 8 83 10 123 8 1 82 2 81 3 80 83 10十六进制整数 以0 x或0X开头 例如 0 x123即 123 16 291 10main inta 0123 b 0 x123 0123是八进制数 0 x123是十六进制 printf a d b d a b 程序运行结果为 a 83 b 291 12 原码 反码 补码正数的原码 反码 补码相同负数的原码为该数二进制最高位为1负数的反码 除符号位外 按位取反负数的补码 反码加一 13 14 2 整型常量的类型我们已知整型变量可分为int shortint 1ongint和unsignedint unsignedshort unsignedlong等类别 1 一个整常量 如果其值在 32768 32767范围内 则认为它是int型 可以将它赋值给int型和1ongint型变量 一个整常量 如果其值超过了上述范围 而在 2147483648 2147483647范围内 则认为它是1ongint型 3 如果某一计算机系统的C版本确定的shortint与int型数据在内存中占据的长度相同 则它的表示范围与int型相同 4 常量中无unsigned型 但一个非负值的整常量可以赋值给unsigned型整变量 只要它的范围不超过变量的表示范围即可 5 在一个整常量后面加一个字母l或L则认为是1ongint型常量 例如123l 432L 这往往用于函数调用中 15 2 3 2整型变量的分类 基本型 以int表示短整型 以shortint或short表示1 类型长整型 以longint或long表示 123l 123L 无符号基本型 unsignedint 无符号型无符号短整型 unsignedshort 无符号长整型 unsignedlong 32768 32767 一个无符号整型变量中可以存放的正数的范围比一般整型变量中正数的范围扩大一倍 inti 变量i的数值范围 32768 32768 unsignedintj 变量j的数值范围 0 65535 1 整型变量的类型 16 整型变量的字长short型 字长16位 2个字节 long型 字长32位 4个字节 int型 随编译程序而定 可以是2个字节 也可以是4个字节 C要求long型数据长度不短于int型 short型不长于int型 short int long long型可以得到大范围的数据 但同时会降低运算速度 因此除非不得已 不要随便使用long型 17 整型数据的溢出 main inta b a 32767 b a 1 printf d d a b 运行结果 32767 32767改进 将变量a和b改成long型 并按 ld格式输出 18 2 整型变量的定义前面已提到 C规定在程序中所有用到的变量都必须在程序中指定其类型 即 定义 这是和BASIC FORTRAN不同的 而和PASCAL相类似 例如 inta b 指定变量a b为整型 unsignedshortc d 指定变量c d为无符号短整型 1onge f 指定变量e f为长整型 对变量的定义 一般是放在一个函数的开头部分 也可以放在程序中间 但作用域只限于某一部分程序 例2 4整型变量的定义与使用 main inta b c d 指定a b c d为整型变量 unsignedu 指定 为无符号整型变量 a 20 b 40 u 10 c a u d b u printf c dd d c d 运行结果为 c 30 d 30 19 2 4实型数据 2 4 1实型常量1 实型常量的形式 两种 十进制数形式 由数字和小数点及正负号组成 注意 必须有小数点 例如 3 148 6 23 指数形式 由数字 小数点 字母e或E及正负号组成 注 e或E之前必须有数字 且后指数必须为整数 例如 正确 3 5E 52e3错误 E23 6e3 5 e62 实型常量的类型多数C编译系统对实型常量按双精度 double 类型处理 以提高运算精度 此时系统为实型常量分配8个字节的存储空间 如果在实型常量后加字母f或F 则强调表示该数是float型常量 这时系统会为其分配4个字节的存储空间 20 2 4 2实型变量实型变量可分为 单精度 float型 如 floatx y 双精度型 double型 如 doublea b c 说明 1 float型变量在内存中占4个字节 double型变量在内存中占8个字节 2 单精度实数提供7位有效数字 双精度实数提供15 16位有效数字 3 一个实型常量不分float和double型 一个实型常量可以赋给一个float型或double型变量 并根据变量的类型截取实型常量中相应的有效位数字 例如 floata doubleb a 123456 789e5 b 123456 789 21 3 5字符型数据 3 5 1字符常量1 字符常量 用单引号括起来的一个字符 例如 a B 2 转义字符 指不能用符号直接表示的字符常量 将反斜杠 后面的字符转变成另外的意义 如 n 中的 n 不代表字母n而作为 换行 符 例如 n 换行 t 横向跳格 水平制表 b 退格 反斜杠字符 r 回车 f 换页 a 报警 0 空字符main printf Y b n 运行结果 程序运行时在屏幕上显示结果 程序运行时在打印机上输出结果 22 注意 字符常量首尾的单引号是定界符 不占存储空间 在C语言中 a 和a是不同的 前者代表字符常量 后者代表一个标识符 a 和 A 是不同的字符常量 前者存储的是小写字母a的ASCII码值为97 后者存储的是大写字母A的ASCII码值为65 转义字符代表一个字符 在内存中只占一个字节的存储空间 转义字符 0 就是ASCII码值为0的字符 常用于表示字符串结束的标志符 ddd 形式的转义字符是用ASCII码 八进制数 表示的一个字符 例如 101 代表字符 A 012 代表 换行 xhh 形式的转义字符也代表一个字符 反斜杠后必须以小写字母x开头 后面的两位数字为十六进制数 例如 xa 和 xA 都代表回车换行符 等价于转义字符 n 23 3 5 2字符变量 定义形式 char标识符1 标识符2 标识符n例如 charc1 c2 c3 ch c1 a c2 b c3 c ch d 说明 1 字符变量在内存中占一个字节 2 在内存中 是把字符对应的ASCII码值放到存储单元中 3 字符型数据与整型数据之间可以通用 24 main charc1 c2 c1 97 c2 98 printf c c n c1 c2 printf d d n c1 c2 输出结果 ab9798 main inti charc i a c 97 printf c d n c c printf c d n i i 输出结果 a 97a 97 25 2 5 3字符串常量 1 定义 括在一对双引号之内的字符序列或转义字符序列称为字符串常量 例如 Howareyou a abc n t 2 存储 字符串中的字符依次存储在内存中一块连续的区域内 并且把空操作字符 0 自动附加到字符串的尾部作为字符串的结束标志 故字符个数为n的字符串在内存中应占n 1个字节 例 c china china 0 26 b 与 B 是否相同 b 与 b 是否相同 b为98 B为66 b 是字符常量 b 是字符串常量 思考 注意 字符串常量首尾的双引号是定界符 不属于字符串的内容 如果字符串本身包括了双引号或反斜杠 必须使用转义字符 不要将字符常量与字符串常量混淆 a 是字符常量 a 是字符串常量 二者不同 前者只占一个字节的存储空间 存放字符 a 的ASCII码值 后者占两个字节的存储空间 分别存放字符 a 和字符串结束标志 0 字符串常量中包含转义字符时 一定要注意其长度的计算 在写字符串时不必加 0 字符 0 是系统自动加上的 27 2 6算术运算符和算术表达式 2 6 1基本的算术运算符和算术表达式1 基本的算术运算符在C语言中 基本的算术运算符有5个 加法运算符 正值运算符 减法运算符 负值运算符 乘法运算符 除法运算符 模运算符 注意 除法运算符 的运算对象可以是各种类型的数据 但是当进行两个整型数据相除时 运算结果也是整型数据 即只取商的整数部分 而操作数中有一个为实型数据时 则结果为双精度实型数据 即double型 例如 5 0 10的运算结果是0 5 5 10的运算结果是0 而不是0 5 10 4的运算结果是2 求余运算符 要求运算对象必须是整型操作数 它的功能是求两个操作数相除的余数 余数的符号与被除数的符号相同 例如 11 3的值为2 11 3的值为 2 2 5的值为2 28 2 算术表达式算术表达式是指用算术运算符和括号将运算对象 也称操作数 如常量 变量 函数等 连接起来 符合C语法规则的式子 如 a b c 1 5 a 在算术表达式中 运算对象可以是各种类型的数据 包括整型 实型或字符型的常量 变量及函数调用 2 6 2算术运算符的优先级 结合性在5个算术运算符中 和 的优先级相同且高于 当运算符的优先级相同的情况下 这5个运算符的结合方向为从左至右 先左后右 简称左结合 例 a b c由于算术运算符为左结合 故先执行a b 再执行加c的运算 29 2 7赋值运算符和赋值表达式 2 7 1基本赋值运算符 形式 变量名 常量或表达式作用 将右边常量或表达式的值赋给左边的变量例如 b c d赋值符号 就是赋值运算符 它的作用是将一个数据赋给一个变量 如x 5的作用是执行一次赋值操作 将常量5赋给变量x 结合方向 从右向左 例如 a b c 10 等价于 a b c 10 即先将常量10赋给变量c 然后再将10赋给变量b 最后将10赋给变量a 注意 如果表达式类型与左边的变量的类型不匹配 自动进行类型转换 30 2 7 2复合赋值运算符复合赋值运算符 在赋值符 之前加上其它运算符共有10种复合赋值运算符 复合算术运算符5个 复合位运算符5个 例如 a 3a a 3x y 3x x y 3 注意 a a b如果b是包含若干项的表达式 则相当于它有括号 如 x y 3x y 3 x x y 3 不要写成x x y 3 31 2 8逗号运算符和逗号表达式 1 逗号运算符 即 优先级 为所有运算符中级别最低的 2 逗号表达式形式 表达式1 表达式2 表达式n求解过程 顺次求解表达式1 表达式2 最后求解表达式n 逗号表达式的值为表达式n的值 例如 a 3 4 a 5a 3 4 a 5 a 5注意 并不是任何地方出现的逗号都是作为逗号运算符 函数参数也是用逗号来间隔的 60 17 32 2 9自增运算符 自减运算符及C语言运算符的优先级 2 9 1自增运算符自增运算符 是单目运算符 其作用是使单个变量的值增1 自增运算符种类有两种 前置 i 先执行i 1 再使用i值 后置i 先使用i值 再执行i 1 例如 j 3 k j 则k 4 j 4 j 3 k j 则k 3 j 4 33 2 9 2自减运算符自减运算符 是单目运算符 其作用是使单个变量的值减1 自减运算符种类也有两种 前置 i 先执行i 1 再使用i值 后置i 先使用i值 再执行i 1 例如 j 3 k j 则k 2 j 2 j 3 k j 则k 3 j 2 注意 自增运算符 自减运算符 只能用于变量 不能用于常量和表达式 例如 5 a b 等都是非法的 和 的结合方向是 自右至左 其优先级高于算术运算符 例如i 3 i 相当于 i 因此表达式的值为 3 i 4 自增运算符 自减运算符 常用于循环语句中 使循环控制变量加 或减 1 以及指针变量中 使指针指向下 或向上 一个地址 34 2 9 3C语言运算符的优先级与结合性 C的运算符有以下几类 1 算术运算符 2 关系运算符 5 赋值运算符 及其扩展赋值运算符 6 条件运算符 7 逗号运算符 8 指针运算符 和 9 求字节数运算符 sizeof 10 强制类型转换运算符 类型 11 分量运算符 12 下标运算符 13 其他 如函数调用运算符 35 C语言规定了运算符的优先级和结合性 运算符的优先级别从高到低依次为 初等运算符 如 单目运算符 如 指针 类型 算术运算符 先乘除 后加减 关系运算符 逻辑运算符 不包括 条件运算符 赋值运算符 逗号运算符 所谓结合性是指 当一个操作数两侧的运算符具有相同的优先级时 该操作数是先与左边的运算符结合 还是先与右边的运算符结合 自左至右的结合方向 称为左结合性 反之 称为右结合性 结合性是C语言的独有概念 除单目运算符 赋值运算符和条件运算符是右结合性外 其他运算符都是左结合性 36 2 10不同类型数据间的混合运算 1 隐式类型转换隐式类型转换主要又可分为两类 算术转换和赋值转换 1 算术转换当表达式中的运算对象不同时 系统会进行类型的自动转换 转换的基本原则是 自动将精度低 表示范围小的运算对象类型向精度高 表示范围大的运算对象转换 2 赋值转换赋值转换主要出现在赋值表达式中 不管赋值运算符右边是什么类型 都要转换为赋值运算符左边的类型 若赋值运算符右边的值表示范围更大 则左边赋值所得到的值将失去右边数据的精度 37 2 强制类型转换C语言提供了强制类型转换运算符来实现强制类型转换 格式 类型 表达式例如 int 3 5注意 在进行类型转换时 操作数的值并不发生改变 改变的只是表达式值的类型 例如 floatx 3 5 i int x i的值为3 使用强制转换类型得到的是一个所需类型的中间量 原表达式类型并不发生变化 例如 double a只是将变量a的值转换成一个double型的中间量 其数据类型并未转换成double型 int x y 将x y的值转换为int类型 int x y 将x的值转换为int类型 再与y相加 38 2 11本章小结 1 C语言的数据类型有 基本类型 构造类型 指针类型和空类型 其中基本数据类型包括整型 实型 包括单精度实型和双精度实型 字符型和枚举类型等 构造类型包括数组类型 结构体类型和共用体类型 2 C语言标识符的构造规则 标识符由字母 数字和下划线组成 标识符必须以字母或下划线开头 3 常量是指在程序运行过程中其值不能被改变的量 常量通常有4种类型 整型常量 实型常量 字符型常量 字符串常量 整型常量有十进制 八进制和十六进制表示 实型常量有小数和指数两种表示形式 均按double类型处理 字符常量是用单引号 即撇号 括起来的单个可视字符或转义字符 字符串常量是用一对双引号括起来的若干字符序列 存储时系统会自动在其末尾加 0 作为字符串的结束标志 因此字符串常量所占存储空间等于字符串长度加1 4 在程序运行时 其值能被改变的量叫变量 变量必须先定义后使用 变量的类型由定义语句中的数据类型标识符指定 系统根据变量类型分配相应的存储空间 存放变量的值 通过变量初始化可以给变量赋初值 不能直接使用未经赋值的变量 因为它的值是一个不确定的数据 5 在C语言中 基本的算术运算符有5个 分别是 其中 和 的优先级相同且高于 当运算符的优先级相同的情况下 这5个运算符的结合方向为从左至右 先左后右 简称左结合 6 在进行混合运算时 如果一个运算符两侧的运算对象的数据类型不同 系统则按 先转换 后运算 的原则 首先将数据自动转换成同一类型 然后在同一类型数据间进行运算 C语言提供了强制类型转换运算符来实现强制类型转换 其格式为 类型 表达式
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 课件教案


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!