




已阅读5页,还剩79页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第2章数据类型及其运算 2 1C语言数据类型 数据类型是指定义了一组数据以及定义在这一组数据上的操作 它是程序中最基本的元素 数据类型 基本类型 空类型 无值类型 void 构造类型 指针类型 整型int 实型 浮点型 字符型char 结构类型struct 数组类型 枚举型类型enum 联合型类型union 单精度型float 双精度型double 图2 1C数据类型 2 1 1基本数据类型 基本数据类型有 整型 int 浮点型 float 字符型 char 整型数用于存储整型量 如123 7 存储整数的位数依机器的不同而异 见下表 实型有整数部分和小数部分 字符型表示一个字符 整型数 231 231 1 2147483647 2147483648 浮点型 浮点数用于表示实型数据 如3 14159 见表2 2 字符类型表示单个字符 如 a 见表2 3 2 2标识符 标识符 符号常量名 变量名 函数名 标号 数组名等 简单的说 就是一个名字 标识符命名规则英文字母大小写 数字0 9 下划线 以字母或下划线开头 尽量 见名知义 例 sum a8f x avg 1错误的标识符 5y t y good to练习 下列标识符是否合法 为什么 areastudent noifscore aa2daymonth 3int sumno 3 2 3常量和变量 2 3 1常量常量 是指在程序运行过程中其值不能改变的量 常量表示方法 整型常量浮点型常量字符型常量字符串常量 1 整型常量 整型数据表示通常意义上的整数 整型常量可以用十进制 八进制或十六进制表示 1 十进制常量由数字0到9和正负号组成 没有前缀 不能以0开始 没有小数部分 如3 7等 2 八进制常量由数字0开头 其后由若干个0 7的数字组成 没有小数部分 不能带符号 如0376 0123等 3 十六进制常量以0 x或0X开头 其后由若干0 9的数字及A F 或a f 的字母组成 没有小数部分 不能带符号 如0 x173 0 x3af 整型常量以后可跟字母l或L表示long型 长整数 也可以跟u或U表示unsigned整数 无符号整数 如以下数是合法的 375u 无符号整数12345UL 无符号长整数54321L 长整数13579ul 无符号长整数 2 浮点数常量 浮点数也称为实型数 只能以十进制形式表示 共有两种表示形式 小数表示法和指数表示法 1 小数表示法使用这种表示形式时 实型常量分为整数部分和小数部分 如10 2 4 2等 2 指数表示法也称科学记数法 表示方法是 系数E指数 如1 2e20 3 4e 2 注意 指数部分必须是整数 并且在E或e的两边都至少要有一位数 如以下数是非法的 E5 3 2E 3 字符常量 1 字符常量C中字符常量是用单引号括起的一个字符 如 a 在内存中 字符数据以ASCII码存储 如字符 a 的ASCII码为97字符常量包括两类 一类是可显字符 如字母 数字和一些符号 等 另一类是不可显字符 如ASCII码为13的字符表示回车 2 转义字符转义字符是特殊的字符常量 表示时一般以转义字符 开始 后跟不同的字符表示不同的特殊字符 表2 2列出了常用的特殊字符 如 101 八进制 x41 十六进制 都可以表示字符 A 再如 b 表示退格 r 表示回车 n 表示换行 includemain printf This tis ta tbook n printf Thisi bsabook n printf Thisis a book n includemain charch ch 101 printf c ch includemain chara a b printf a c d n a a b a 1 printf b c d n b b includemain chara b a x b y a a 32 b b 32 printf c c n d d n a b a b 4 字符串常量 字符串常量是由一对双引号括起来的零个或多个字符序列 如 Goodmorning 字符串存储时 系统自动在字符串末尾加上结束标记 0 如 Goodmorning Goodmorning 0 注意 字符串常量不能放在字符串变量中注意 a 和 a 的区别 a 是一个字符常量 在内存中占一个字节 而 a 是一个字符串常量 在内存中占两个字节 97 5 符号常量 用一个标识符代表一个有特定含义的常量如用PI表示圆周率3 1415926 在程序中用到圆周率时就用PI代替用编译预处理命令 define定义如 definePI3 14159 注意 一般大写 在程序中只能被引用 不能被重新赋值 将求圆面积 圆环面积和圆柱体面积的程序中用到的圆周率值都使用符号常量PI进行替换 2 3 2变量 变量是指程序在运行时其值可改变的量 每个变量由一个变量名惟一标识 同时 每个变量又具有一个特定的数据类型 不同类型的变量在内存中占有存储单元的个数不同 C中要求所有变量 先定义 后使用 目的是 1 保证程序中变量名使用正确 2 系统编译时根据变量的类型为其分配合适的存储单元 如 floatr v 系统给r v各分配大小为4B的单元 3 编译系统根据变量的类型进行语法检查 如 r 5是非法的表达式 1 变量名命名 变量名的命名要遵守以下规则 由字母 数字及下划线组成 且不能以数字开头 中间不能有空格 例如 下列变量名是合法的变量名 a123c3bfile 1注意 不能是C的保留字 也叫关键字 一般不要超过31个字符 尽量 见名知义 C的关键字 关键字 C系统保留字 共32个 2 变量定义和说明 C中 变量使用之前一定要定义或说明变量定义的格式一般为 类型变量名 其中 类型指出变量所存放的数据的类型 变量名是任意合法的变量名 标识符 注释指明该变量的含义和用途 如 floatarea 定义变量area表示面积 多个同一类型的变量可以在一行中定义 中间用逗号隔开 也可以分别定义 例如 inta b c 定义3个整型变量a b c和inta 定义整型变量aintb 定义整型变量bintc 定义整型变量c二者等价 3 变量赋值 变量赋值一般采用两种方式 第一种方式是在定义变量时给变量赋一个初值 变量初始化 例如 inta 3 floatb 3 4 c 2 8 chard a 第二种方式是先定义变量 然后通过赋值语句赋值 例如 inta a 3 练习 C语言中 合法的字符常量是 A 084 B x43 C AB D ab 下列变量赋初值的语句正确的有哪些 inti 0 j 0 k 0 inti j k i j k 0 inti j k 0 inta 4 5 int85 a inta 85 a 语句printf ab bc rde 的执行结果如何下列代码的执行结果如何 inta 3 b 4 a a b b a b a a b printf a d b d a b 已定义c为字符型变量 则下列语句中正确的是 A c 97 B c 97 C c 97 D c a 以下选项中可作为C语言合法整数的是 A 10110BB 0356C 0XffaD x2a2以下选项中 不能作为合法常量的是A 1 234e04B 1 234e0 4C 1 234e 4D 1 234e0下列代码的执行结果如何 inta charchar1 a 3 9 char1 a 62 printf a d char1 c a char1 2 4运算符和表达式 运算符概述运算符 规定了对数据的基本操作 1 分类 按功能分运算符的主要类型有 算术运算符 赋值运算符 关系运算符 逻辑运算符 对象个数分 单目 双目 三目 其它 2 优先级与结合性优先级 表达式求值时 按运算符的优先级别高低次序执行 结合性 运算符的优先级别相同 按自左至右 自右至左 的结合方向运算 2 4 1算术运算符与表达式 1 基本算术运算符 加法运算符 或正值运算符 如3 5 3 减法运算符 或负值运算符 如5 2 3 乘法运算符 如3 5 除法运算符 如5 3 取余运算符 如7 4 说明 双目运算符 即要求有两个操作数 两边都为整数时作整除 如5 2 2 两侧必须均为整型 如7 4 3 用算术运算符和括号将运算对象连接起来的符合C语法规则的式子 称C算术表达式 如 a b c 5 5 d a 表达式中的符号均写在同一行中 不能有上标或下标 当一个表达式中包含多个算术运算符时 按优先级由高到低进行 相同优先级的运算符按结合方向计算 例如计算 4 5 8 10 12 5 2按优先级由高到低进行如果一个运算符的两侧的数据类型不同 则先自动进行类型转换 然后进行运算 2 算术表达式 3 自增 自减运算符 i i 使用i之前 先使i的值加 减 1 i i 使用i之后 再使i的值加 减 1 如果i 3 则执行语句 j i j值为4 等价于i i 1 j i i先加1 后参与表达式的运算 j i j值为3 等价于j i i i 1 i先参与表达式的运算 然后加1 注意 和 只能用于变量 不能用于常量或表达式 5 3 a 和 的结合方向是 自右至左 includemain inti x y i 5 x i 后缀运算 先把i的值赋给x 然后i的值加1 printf i d x d n i x i 5 y i 前缀运算 先使i的值加1 然后将i的值赋给y printf i d y d n i y includemain inta 3 b 5 c c a b printf a d c d n a c a 3 b 5 c a b printf a d c d n a c includemain inta b c a 6 b 6 c 6 a b c printf d d d n a b c a b c printf d d d n a b c a b c printf d d d n a b c 例 voidmain inti 6 j 6 k 6 h 6 m n x y m i n j x k y h printf ni d m d j d n d i m j n printf nk d x d h d y d k x h y 运行结果 i 7 m 6 j 7 n 7k 5 x 6 h 5 y 5 2 4 2赋值运算符和表达式 赋值 给变量提供数据的一种方法 1 赋值表达式 变量 表达式作用 先计算 右边表达式的值 然后将其送给 左边的变量 如 area r r 3 14s 0优先级 比算术运算符低 仅高于逗号运算符 结合性 自右向左 若定义 inta 2 则表达式b c a 4的计算过程为 先计算 c a 4得该表达式的值为6 然后计算 b 6得该赋值表达式的值为6 3 复合赋值表达式 在赋值符 之前加上其他运算符 例如 a 3等价于a a 3x y 8等价于x x y 8 说明 赋值表达式也可以包含复合的赋值运算符 凡是二元运算符都可与赋值符一起组合成复合赋值符 2 赋值运算中的类型转换 当赋值号 右边表达式的值与 左边的变量的类型不同时 先将 右边表达式的值转换成 左边变量的值 然后再赋值 例如 intn floats 4 3 n s 5 结果 n 21 include stdio h main floata a 3 2 printf a f n a include stdio h main intx y x 6 y 8 printf x1 d n x x y 12 printf x2 d n x 例2 10 2 4 3关系运算符与关系表达式 所谓 关系运算 实际上是 比较运算 若条件满足 则关系表达式的值为ture 1 否则 关系表达式的值为false 0 1 关系运算符 例如下列关系表达式 a b表示条件 a大于b x 0表示条件 x等于0 a b x y表示条件 a b小于x y 2 关系运算符优先次序 算术运算符 关系运算符 赋值运算符且 高于 例如 a b bb bc等效于a b c 2 关系表达式 用关系运算符将两个表达式连接起来的式子 如a b a 80关系表达式的值是一个逻辑值 即 真 或 假 如 5 3值为假 5 0值为真 说明 表达式可以是算术或关系 字符等表达式 如a b b c a b b 3 C语言以1代表 真 以 0 代表 假 如 d 5 3d的值为1 关系运算符 与赋值运算符 不同 比较 k 1与k 1表达式a b d c也是合法的关系表达式 但在实际应用中很少使用 因为它不能表示 a b大于d且大于c 问题 如何表示 a x b0 y 10等条件 特别提示 include stdio h main charc d intm 2 n 5 printf d c 1 e printf d c A a D printf d m 2 n n 9 printf d m 2 n 例2 11 2 4 4逻辑运算符与逻辑表达式 逻辑运算符 逻辑与 相当于其他语言中的AND 逻辑或 相当于其他语言中的OR 逻辑非 相当于其他语言中的NOT 逻辑运算规则 a b只有当a b都为真时 a b才为真 否则为假 a b若a b之一为真 则a b为真 或只有当a b都为假时 a b才为假 否则为真 a若a为真 则 a为假 逻辑表达式逻辑表达式的值应该是一个逻辑量 真 或 假 注意 C在给出运算结果时 0代表假 1代表真 但在判断一个量是否为 真 时 0代表假 非0代表 真 例如 4 0 2if x 等价于if x 0 优先次序 见图 特别提示 在逻辑表达式求解中 并不是所有的逻辑运算符都被执行 a b只有a为真 非0 时 才需要判别b的值 a b只要a为真 非0 就不必判断b 只有a为假 才判别b 如当a 1 b 2 c 3 d 4 m n 1时 执行 m a b n c d 后n main intx 5 y 7 a 6 b 9 printf d n x a b 例2 12 main inta b c a b c 1 a 例2 13 1 条件表达式的一般格式 表达式1 表达式2 表达式32 计算过程 首先计算表达式1 若其值为真 非0 则计算表达式2 取表达式2的值作为整个条件表达式的值 否则 计算表达式3 取表达式3的值作为整个条件表达式的值 3 优先级 条件运算符的优先级比关系运算符和算术运算符都低 比赋值运算符高 例如 y x 0 x 1 x x 1等价于y x 0 x 1 x x 1 2 4 5条件运算符 例2 14 include stdio h main inta b max printf inputa b scanf d d includevoidvoidmain intx y z w z x 1 y 1 y x 5 x 7 y 3 w y a 4 printf d d d d n x y z w 2 4 6逗号运算符 1 逗号运算符 用逗号将两个表达式连接起来称为逗号表达式 一般形式为 表达式1 表达式2如 3 5 6 82 逗号表达式的计算 自左向右依次计算各表达式3 逗号表达式的值 最右边一个表达式的值如 for j 0 s 0 p 1 j 10 j s j p j 注意 并不是任何地方出现的逗号都是作为逗号运算符 例如printf d d d a b c 相同类型数据直接运算 结果为原数据类型 不同类型数据运算 先转换成同一数据类型 再计算 类型转换的两种转换形式 1 当参加运算的两个操作数类型不同时 先将 低 类型的数据转换为 高 类型 再计算 系统自动进行的转换 隐式转换 2 当需要将某数据转换成指定类型时使用 强制类型转换 2 5数据类型转换 1 隐式转换 自动进行的转换 图中横向向左的箭头表示必定的转换 纵向箭头表示运算时不同类型的转换方向 2 强制类型转换一般形式为 类型名 表达式 例如 double a 将a转换成double型 int x y 将x y的值转换成整型 说明 强制类型转换得到一个所需类型的中间变量 原来变量的类型未发生变化 例 含有强制类型转换的表达式的计算 voidmain inta 2 b 3 floatx 3 5 y 2 5 z z float a b 2 int x int y printf n f z 运行结果 3 500000 includemain floatm intn m 1 31 n int m printf m f n d n m n 例2 16 表达式中的混合运算与类型转换 文件名 exam2 6 cpp includevoidmain chara A intb 2 f 5 floatc 1 2 d 6 8 doublee 1 25 printf d n a b c d e f 2 6基本输入和输出 2 6 1字符输入输出函数putchar函数 字符输出函数格式 putchar 字符型数据 功能 向终端输出一个字符 说明 函数参数可以为char或int型常量 变量 表达式 也可以输出控制字符或其他转义字符 如putchar n putchar 015 如在函数中调用putchar 函数 应在函数前加上包含命令 include stdio h include stdio h main chara b a A b B putchar a putchar b putchar a 32 putchar b 32 例2 17 例 输出三个字符 A B include stdio h voidmain charc1 intc2 c1 A c2 66 给变量c1 c2赋值 putchar n 输出字符 n putchar c1 输出变量c1中的字符 A putchar 输出常量字符 putchar c2 输出变量c2中的字符 B getchar函数格式 getchar 功能 从键盘输入一个字符 注意 getchar 只能接收一个字符 空格 回车都作为输入 输入终止符为回车 如在函数中调用getchar 函数 应在函数前加上包含命令 include stdio h include stdio h main charc c getchar putchar c putchar n printf d n c 例2 18 例 输入两个字符 输出每个字符及其ASCII码 include stdio h main charc d printf nentertwocharacters c getchar d getchar printf c d n c c 输出c字符及ASCII码 printf c d d d 输入字符 输出对应ASCII码 includemain charch intn ch getchar n ch 将ch存放的字符隐式转换成ASCII码赋给n printf d n n 输入的大写字母转换成小写字母输出 其他字母不变 includemain charch ch getchar putchar ch A 2 6格式输入输出函数 C不提供输入输出语句 输入输出操作由函数实现 printf函数和scanf函数不是输入输出语句 而是C标准函数 使用C库函数时 必须将该函数所在头文件 h 包含到源文件中 如 include stdio h 1 格式化输出函数printf printf函数的一般格式printf 格式字符串 输出表列 其中 格式字符串包括 是用双引号括起来的字符串 包括 格式指示符 由 和格式字符组成 作用是将输出项转换为指定格式输出 如 d f转义字符 指定光标位置 普通字符 格式控制串中除格式说明外的其他字符 是需要原样输出的字符 2 输出表列 是需要输出的一些数据 可以是常量 变量 函数 表达式等 格式指示符 1 格式字符 如 a 5 b 7 printf d d a b printf a d b d n a b 如 inta 3 floatb 5 printf nentername printf na d b f a b printf f a b includemain inta 3 b 7 printf d a b printf d b a printf d a b printf d a b printf d a 运行结果 11 0 1 12 0 2 长度修饰符 l ld 输出长整形 hd 输出短整形 3 宽度和精度修饰 m n m nd 输出宽度为m 整形位数为n m nf 输出宽度为m 小数位数为n m ne 输出宽度为m 有效数字为n位 4 左对齐修饰 includemain intb longc floatf 123 456 b 12 c 1234567 printf d 4d 4d 04d n b b b b printf ld 7ld 7ld 07ld n c c c c printf s 10s 10s 10 4s 10 4s n string string
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年医疗保健招聘模拟题及答案
- 2025年广告设计师职业能力水平考核试题及答案解析
- 课件不能外传的原因
- 2025年安全管理专业水平试题及答案
- 2025年青少年书法教师职位笔试备考指南与题目预测
- 课件FLISN播放问题
- 2025年土建安全员管理试题及答案
- 2025年云计算技术工程师职业能力考核试题及答案解析
- 2025年工程监理师职业资格考试试题及答案解析
- 2025年厕长助理面试模拟题及答案详解
- 净菜项目可行性研究报告
- GB/T 6974.3-2024起重机术语第3部分:塔式起重机
- 智慧林业综合管理平台解决方案
- 中秋节猜灯谜良宵美景解灯谜中秋祝福课件
- 安防行业视频监控系统维护方案
- 初高中政治衔接-知识点讲义
- 全国交通运输行政执法综合管理信息系统考试题库-中(多选题练习)
- 2024年T电梯修理证解析及电梯修理-T证模拟考试题库
- 2024春期国开电大本科《商法》在线形考(形成性考核作业一至四)试题及答案
- (正式版)SHT 3046-2024 石油化工立式圆筒形钢制焊接储罐设计规范
- 2024年四川攀枝花市川投能源攀水电公司招聘笔试参考题库含答案解析
评论
0/150
提交评论