基本数据类型与输入输出.ppt_第1页
基本数据类型与输入输出.ppt_第2页
基本数据类型与输入输出.ppt_第3页
基本数据类型与输入输出.ppt_第4页
基本数据类型与输入输出.ppt_第5页
免费预览已结束,剩余83页可下载查看

下载本文档

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

文档简介

1 C 大学基础教程 第2章基本数据类型与表达式 北京科技大学信息基础科学系 2 程序中最基本的元素是数据类型 根据数据类型可以为变量或常量分配内存空间 将变量 常量和运算符结合在一起组成表达式 进行复杂的运算和处理 3 第2章基本数据类型与表达式 2 1词法记号和标识符2 2基本数据类型2 3变量和常量2 4运算符和表达式2 5基本输入输出 4 2 1词法记号和标识符 5 2 1词法记号和标识符 1 C 字符集英文字母 A Z a z数字字符 0 9特殊字符 空格 6 2 1词法记号和标识符 2 关键字预先定义好的标识符 C 编译器对其进行特殊处理 使用VC 6 0的编辑环境时 缺省是蓝色的字符即为关键字 7 2 1词法记号和标识符 3 标识符标识符是程序员声明的单词 它命名程序正文中的一些实体 如函数名 变量名 类名 对象名等 C 标识符的构成规则如下 1 不能是C 的关键字 2 第一个字符必须是大写 小写字母或下划线 3 其他字符可以由大 小写字母 下划线或数字组成 不能包含空格和 等特殊字符 4 为方便输入 长度一般不超过31个字符 8 2 1词法记号和标识符 例如 合法的标识符 apple Student 123 No1 max num不合法的标识符 51job maxnum abc 注意 C 的标识符是大小写敏感的 即abc ABC 9 2 1词法记号和标识符 4 分隔符分隔符用于分隔程序中的正文 在C 中使用下列字符作为分隔符 这些分隔符不表示实际的操作 仅用于构造程序 比如 用来作为一句完整语句的结束 10 2 1词法记号和标识符 5 空白在C 语句中经常出现空白 制表符 空格 空行 等 通常都忽略不计 如 x a b或写成 x a b 11 2 2基本数据类型 12 2 2 基本数据类型 什么是数据类型 数据是程序处理的对象 数据根据其本身的特点进行分类 从而形成不同的数据类型 例如 数学中有自然数 整数 实数 13 2 2 基本数据类型 C 将数据类型分成两类 基本数据类型自定义数据类型基本数据类型整型 int字符型 char wchar t 双字符型 实型 float double逻辑型 bool 14 2 2 基本数据类型 自定义数据类型数组 type 指针 type 引用 type 空类型 void结构 struct联合 union枚举 enum类 class 15 注意 完整数据类型的含义 16 2 2 基本数据类型 修饰符在C 中为了更加准确的描述数据类型 提供了4个关键字用来修饰基本的数据类型 1 长型long2 短型short3 有符号signed4 无符号unsigned 17 1 short 仅用来修饰int 称为短整型 占2字节内存 也可直接简写为short 2 long 仅修饰int和double 因为在不同的编译环境中使用long修饰的数据所占内存不同 这里列出的是在VC 6 0的环境下的 3 unsigned 用来修饰char short和int 表示该数据类型为无符号数 4 signed 用来修饰char short和int 表示该数据类型为有符号数 为缺省设置 18 2 2 基本数据类型 数据类型和内存空间不同的数据类型 加上不同的修饰符就具有了不同的特点 在内存中占用的空间也不同 因而其所能表示的数值范围也不尽相同 内存单元的单位是字节 因此用来表示数据类型的长度的单位也是字节 19 2 2 基本数据类型 注意整型int的长度等于机器的字长 16位机 int 2字节 32位机 int 4字节 但是short和long表示的数据长度是固定的 任何支持标准C 的编译器都是如此 因而如果需要编写可移植性好的程序 应将整型声明为short或long 20 2 2 基本数据类型 例题编写一个程序 输出基本数据类型char int float double bool的长度 提示 使用sizeof 数据类型 能够获取不同数据类型的长度 21 输出基本数据类型的长度 includeusingnamespacestd voidmain cout char sizeof char 字节 n cout int sizeof int 字节 n cout float sizeof float 字节 n cout double sizeof double 字节 n cout bool sizeof bool 字节 n 22 2 3变量和常量 23 2 3变量和常量 概述程序所处理的数据不仅分为不同的数据类型 而且每种类型的数据还分为变量和常量 程序在运行中就是通过这些变量和常量来操作数据的 什么是变量 在C 中 变量是存储信息的地方 变量的实质是内存中的一个地址空间 在这个地址空间中可以进行数据的存储和读取 24 2 3变量 变量定义的格式 数据类型变量名1 变量名2 变量名n 例如 定义各种类型的变量intnum floatf charch shorts doublearea length 25 2 3变量 说明在创建或定义变量时 需要指明该变量的数据类型和名称 数据类型 决定变量的存储方式和可以进行的操作 变量名称 用来区分不同的变量 变量一旦被定义 则系统自动为其分配应占的内存 26 2 3变量 变量名称的定义遵循标识符定义的规则 实际上变量名称就是其中一种标识符 常用的命名约定有三种 1 Unix环境常用的命名法my age num of student2 驼峰式命名法myAge numOfStudent3 匈牙利标记法iMyCar ipMyCar 27 2 3变量 赋值使用赋值运算符 可以将一个值赋给变量 例如 unsignedshortage age 18 或者unsignedshortage 18 或unsignedshortage 18 28 2 3变量 我们可以一次定义多个相同数据类型的变量 也可以一次为多个变量初始化 charch1 a ch2 b intheight 10 width 6 area 特性 变量可以被多次赋值 但每次赋值后 原值都会被新值覆盖 29 例2 2 赋值运算符的使用 includeusingnamespacestd voidmain intmyAge 18 cout myAge myAge endl myAge 20 cout myAge myAge endl 运行结果 myAge 18myAge 20 30 2 3变量 typedef为已有的数据类型定义一个同义词 或者叫做别名 例如 typedefunsignedintUINT 关键字数据类型别名赋值 注意 使用typedef定义同义词时并不分配内存空间 31 2 3常量 严格来说 常量又分成符号常量和常数 符号常量 代表一个固定不变值的名字 常数 程序中使用的具体的数据 32 2 3常量 符号常量C 中提供了一个关键字const 用来区分常量和变量 并且由于常量代表一个固定的值 并且该值在程序运行过程中不能够被改变 所以要求常量在定义的时候必须进行初始化 例如 constinti 10 关键字数据类型常量名 初始值 33 2 3常量 define关键字在C语言中使用预编译指令 define也能够定义常量 例如 definePI3 1415927关键字常量名值 该语句属于预编译指令 不属于C 语句 因而行尾不需要使用分号 并且由于C 是向下兼容的 因而C语言的程序能够在C 的编译器下顺利运行 但是在C 编程中 建议使用const替代 define定义常量 34 变量和符号常量的定义和赋值 例如 unsignedshortage age 18 或者unsignedshortage 18 或unsignedshortage 18 例如 constinti 10 关键字数据类型常量名 初始值 35 2 3常量 整型常数十进制数 1008进制数 014416进制数 0 x64用U或u表示无符号整型 如65535U 用L或l表示长整型 默认的是int型 36 2 3常量 实型常数1小数形式例如 0 123 23 122指数形式例如 123e5或123E5 123 105注意 e前面必须有数字 e后面必须是整数实常数默认为double型 而不是float 可用后缀F f 表示实数常数为float型 37 2 3常量 字符常数1 用单引号括起来的一个可显示字符 例如 a 2 转义字符以 开头的字符序列 代表特殊的意义 例如 n t 38 39 a0 x07bell 响铃 n0 x0A换行 r0 x0D回车 t0 x09制表符 v0 x0B垂直跳格 b0 x08Backspace 0 x5C 0 x22双引号 0 x27单引号 ddd1 3位8进数 xhh1 2位16进数 40 例2 3 打印特殊字符 includeusingnamespacestd voidmain cout 输出字母 a a endl cout 输出字母 n n 运行结果 输出字母 a 蜂鸣器响一声 输出字母 n 换行 41 2 3常量 反斜杠还可以和八进制数或十六进制结合起来表示相应的ASCII码 表示形式如下 ddd 1 3位八进制数 xhh 1 2位十六进制数我们知道在十六进制的ASCII码表中 字母 a z 的ASCII值是61H 7AH 因此我们也可以使用如下两句代码替代例2 3中的输出 达到同样的结果 cout 输出字母 x61 x07 endl cout 输出字母 x6E x0A 42 2 3常量 字符变量charch1 a ch2 97 ch3 064 原因 在内存中 字符数据以ASCII码存储 即以整数表示 所以 C 中字符数据和整数可以相互赋值 43 例2 4 字符数据和整型数据的转换 includeusingnamespacestd voidmain intn a charch 97 cout 输出内容 n endl cout 输出内容 ch endl 运行结果 输出内容 97输出内容 a 注意 变量在输出时 根据其本身的数据类型进行输出 44 2 3常量 字符串常量由一对双引号括起来的字符序列 例如 howdoyoudo helloworld 45 2 3常量 字符和字符串的区别1 字符常量和字符串常量是不同的 字符串常量以 0 结尾 例如 字符串Hello在内存中的形式 2 a 不等于 a a 占2个字节 a 1个字节 a 0 a 46 2 3常量 字符串变量chara 20 Helloworld n charb 5 a charc a 思考字符串 x07Operating tsystem 有几个字符 显示结果如何 47 2 3常量 逻辑常数逻辑型常数只有两个 false 假 和true 真 在显示器上显示为0和1 48 2 4运算符和表达式 49 2 4运算符和表达式 1 表达式2 语句和块3 运算符赋值运算符 算术运算符 关系运算符 逻辑运算符 位运算符 条件运算符 逗号运算符 50 2 4运算符和表达式 表达式变量 常量是存放数据的地方 那么在C 语言中这些数据是如何处理和计算的呢 在C 语言中将变量 常量和运算符有机结合在一起组成的就是表达式 利用表达式C 可以进行复杂的运算和处理 51 例如 3 2 简单表达式 值为3 22 3 常量表达式 值为5a 简单表达式 值为变量a的值x a b c 较为复杂的表达式表达式是可以嵌套的 比如y x a b 该表达式先将a和b进行相加 然后将结果赋值给x 再将x a b的值赋给y 2 4运算符和表达式 52 2 4运算符和表达式 表达式定义 表达式是操作符 操作数和标点符号组成的序列 操作符 等操作数 变量 常量 数组等标点符号 空格 回车等 53 2 4运算符和表达式 语句和块C 中所有的操作运算都通过表达式来实现 由表达式和结尾的 组成一个C 语句 多条C 语句通过大括号 括起来 组成一个块语句 例如 inttemp x x y y temp 一般来说属于同一个逻辑关系的多条语句组成块语句 54 2 4运算符和表达式 运算符运算符具有优先级和结合性 优先级 级别高的先运算 级别低的后运算 例如 高于 结合性 自左向右结合还是自右向左结合 例如 1 2 3 自左向右结合 55 56 2 4运算符和表达式 运算符根据运算符对操作数的要求不同 分成 一元运算符 仅需要一个操作数的运算符 例如 等二元运算符 需要两个操作数的运算符 例如 等 形如 操作数1运算符操作数2 三元运算符 需要三个操作数的运算符 只有条件运算符 57 2 4运算符和表达式 学习运算符需要特别关注的问题该运算符的优先级该运算符的结合性该运算符的表达式的取值该运算符的特别事项 58 2 4运算符和表达式 赋值运算符1 赋值运算符就是 例如 floatf 3 152 左值 可以合法的放在 左边的操作数右值 可以合法的放在 右边的操作数常量都是右值 所以不能够放在 的左边被赋值 变量既是左值又是右值 可以放在任何位置 59 2 4运算符和表达式 算术运算符C 提供的算术运算符包括 1 二元运算符 加 减 2 一元运算符 正号 负号 60 2 4运算符和表达式 算术运算符注意 1 根据操作数不同 运算规律也不同 整型数为整除运算 例如5 2 2 浮点数为通常意义的除法 即5 0 2 0 2 5 2 取余数运算符 只能对整型数进行操作 不允许对浮点数进行操作 61 2 4运算符和表达式 算术运算符C 中提供了两个特殊的运算符 表示将操作数减1 运算符根据操作数的位置不同 又称为前置 i 和后置 i 1 前置 i 先自身加1 然后再将加1的值作为 i 表达式的值 2 后置 i 将i作为 i 表达式的值 然后自身再加1 62 例2 6 自增运算符的使用 includeusingnamespacestd voidmain inti 1 cout i i endl cout i i endl cout i i endl cout i i endl cout i i endl 1 1 2 3 3 63 2 4运算符和表达式 算术运算符在C 中可以将算术运算符和赋值运算符结合在一起进行运算 因此C 还提供5种复合的赋值运算符 和 例如 x y相当于x x yx y相当于x x yx y相当于x x yx y相当于x x yx y相当于x x y 64 例如 includeusingnamespacestdvoidmain intx 2 y 3 x y 8 cout x endl 原因 x y 8等价于x x y 8 显示22 65 2 4运算符和表达式 算术运算符这些运算符的优先级由高到低依次为 1 正号 负号 2 3 4 66 2 4运算符和表达式 注意在进行算术运算时 很可能出现溢出 溢出是指在给一个变量赋值时超出了其数据类型表示的范围 溢出不会引起编译错误的 但运行结果会出现偏差 例如 shortinti 40000 cout i endl 输出结果 25536 67 2 4运算符和表达式 关系运算符关系运算符有 2 由关系运算符将两个表达式连接起来 就是关系表达式 关系表达式的结果类型为bool 值只能为true或false 屏幕显示为1或0 68 例如 inta 1 b 2 c 3 cout bb c a 5 cout d endl 结果true 输出为1 结果false 输出为0 结果true 输出为1 结果true 输出为1 结果false 输出为0 69 2 4运算符和表达式 逻辑运算符逻辑运算符有 三种 这些运算符的优先级由高到低依次为1 2 3 除了逻辑非 逻辑运算的级别低于关系运算 逻辑表达式的结果类型也为bool 值只能为true或false 屏幕显示为1或0 70 2 4运算符和表达式 注意如果多个表达式用 运行结果 2 71 2 4运算符和表达式 条件运算符条件运算符语法格式为 表达式1 表达式2 表达式3 运算的结果是 如果表达式1的值为真 则返回表达式2的值 否则返回表达式3的值 例1 x ay x y endl 72 2 4运算符和表达式 逗号运算符逗号表达式的语法格式为 表达式1 表达式2 表达式n C 顺序计算表达式1 表达式2 表达式n的值 并将最后一次计算的结果作为逗号表达式的结果 例如 inta b c a 1 b 2 c a b 73 例子 inta b c d d a 1 b 2 c a b a b c cout d endl 6 74 2 4运算符和表达式 数据类型转换当表达式中出现多种数据类型的混合运算时 往往需要进行类型转换 表达式中的类型转换分成两种 1 隐式类型转换2 强制类型转换 75 2 4运算符和表达式 1 隐式类型转换各种二元运算符在进行运算时都要求两个操作数的数据类型一致 如果类型不一致 则系统自动对数据进行转换 隐式类型转换 转换的基本原则 将精度较低 范围较小的类型转换成精度较高 范围较大的类型 char short int long float double 76 2 4运算符和表达式 1 隐式类型转换 1 对于同一种精度的无符号数和有符号数 在进行算术运算中 有符号数向着无符号数方向进行隐式类型转换 signed unsigned 例如 inta 100 unsignedinti 99 cout i a endl 思考一下 如果将unsignedinti 99 改为unsignedshorti 99 结果如何 无符号数 4294967295 带符号数 1 77 2 4运算符和表达式 1 隐式类型转换 2 逻辑运算符要求参与运算的操作数为bool类型 如果是其他类型 则系统自动将其转换成bool类型 转换规则 0为false 非0为true 3 赋值运算符要求 左右两边的操作数数据类型相同 如果类型不一致 则自动将右边的操作数类型向着左边的操作数类型转换 例如 inti 3 15 cout i endl 78 2 4运算符和表达式 2 强制类型转换强制类型转换是通过类型说明符和括号来实现的显式转换 其语法格式为 数据类型名 表达式或数据类型名 表达式 例如 inti 97 cout char i endl floatf 3 75 cout int f endl 79 2 5I O流控制 80 2 5I O流控制 在iostream库中包含有一个标准输入流对象cin和一个标准输出流对象cout 分别用来实现从键盘读取数据 以及将数据在屏幕输出 1 cin2 cout3 I O流的格式控制 81

温馨提示

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

评论

0/150

提交评论