数据类型和表达式.ppt_第1页
数据类型和表达式.ppt_第2页
数据类型和表达式.ppt_第3页
数据类型和表达式.ppt_第4页
数据类型和表达式.ppt_第5页
已阅读5页,还剩91页未读 继续免费阅读

下载本文档

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

文档简介

主讲教师 贾澎涛pengtao jia C C 语言程序设计 第二章数据类型和表达式 本章主要内容 本章介绍C语言的基础 包括 数据类型运算符和表达式均是程序设计的基本知识为什么讨论这些知识 2 通常程序要对数据进行操作处理 处理的对象是数据通过运算符和表达式进行操作 第2章数据类型和表达式 2 1词法构成字符集标识符关键字注释符 3 重点 ANSIC标准规定的C语言关键字共32个 所有C关键字都必须小写标识符由1 32个字符组成 第一个字符必须是字母或下画线 标识符不能与C关键字相同 并区分大小写 C语句以分号结尾 分号是C语句的组成部分 C语句包括简单语句 即表达式语句 复合语句和空语句 4 例题解析 1 下列四个叙述中 正确的是 A C程序中的所有字母都必须小写B C程序中的关键字必须小写 其他标识符不区分大小写C C程序中的所有字母都不区分大小写D C语言中的所有关键字必须小写2 下面属于C语言保留字的是 A IntB typedefC ENUMD unien 5 你能回答下面问题吗 3 以下叙述正确的是 A 可以把define和if定义为用户标识符B 可以把define定义为用户标识符 但不能把if定义为用户标识符C 可以把if定义为用户标识符 但不能把出define定义为用户标识符D define和if都不能定义为用户标识符4 以下选项中合法的用户标识符是 A longB 2TestC 3DmaxD A dat 6 5 下列标识符中正确的一组是 A name char abc A B abc c 5bytes USA 54321C print const type defineD include integer Double short int6 下面的单词中属于C语言保留字的是 A LongB breakC ForD struction 7 数据类型 基本类型 构造类型 指针类型 空类型 void 字符型 char 数值类型 枚举类型 enum 数组类型 结构体类型 struct 共用体类型 union 整型 short int long unsigbed 实型 单精度型 float 双精度型 double 2 2数据类型 8 重点 C语言提供了五种基本数据类型 即char int float double和void 数据类型决定了内存的分配模式 即不同的数据类型所占的内存字节数是不同的 内存分配模式不是C语言本身的规定 而是由宿主机硬件决定的 不同的数据类型允许的数值范围也是不同的 超出了允许的数值范围 就会得到错误的结果 C编译系统不具检查此类错误的能力 C语言对整型和字符型不区分 可以混合使用 9 例题解析 1 C语言中允许的基本数据类型包括 A 整型 实型 逻辑型B 整型 实型 字符型C 整型 字符型 逻辑型D 整型 实型 逻辑型 字符型2 C语言中能用八进制数表示的数据类型为 A 字符型 整型B 整型 实型C 字符型 实型 双精度型D 字符型 整型 实型 双精度型 10 你能回答下面问题吗 2 3常量与变量 2 3 1常量常量 程序运行过程中不能被改变的量 整数在计算机中是准确表示的 可以用十进制 八进制和十六进制数表示 当用八进制数表示时 第一位数字前面必须加0 当用十六进制数表示时 第一位数字前而必须加0 x 无符号整数的末尾必须加字母u或U 长整数的末尾必颁加字母I或L 字符型常数是用单引号括住的单个字符 用转义字符表示不可显示字符 转义字符以 开头 后跟一个特定的字母或八进制数或十六进制数表示的ASCII代码值 11 用八进制时 前面可以也可以不加数字0 用十六进制数时 前面必须加字母x 字符串常数是用双引号括住的一串字符 当两个双引号连写时表示零字符串 C语言将所有的实数都视为双精度型数 双精度数只能用十进制数表示 在计算机中是近似表示的 双精度数用定点数形式表示时 小数点不可缺少 用浮点数形式表示时 E前面必须有数字 带不带小数点均可 E后面只能是整数 不能带小数点 12 符号常数是用标识符表示的常数 它具有变量的外表和常量的内涵 用 define定义的符号常数没有类型和值的含义 在预编译时由编译系统将宏名用宏体替换 define是编译预处理命令 不属于C语言关键字 用const定义的符号常数既有值又有类型的含义 该定义是在编译阶段完成的 13 例题解析 1 下列属于C语言合法的字符常量是 A 97 B A C t D 0 14 你能回答下面问题吗 2 3 2变量 1 变量的有关概念在程序运行过程中 其值改变的数据 称为变量 变量用标识符表示 称为变量名 变量必须 先定义后使用 系统为变量分配存储单元 存储变量的值 编写程序时通过变量名来存 取变量值 15 例如 有变量a它的值是510 2 变量定义 变量定义的一般格式 类型修饰符 数据类型说明符变量列表 例如 inti j longk m floatx y charch1 ch2 16 必须使用合法的标识符作变量名不能使用关键字为变量命名 3 变量的初始化 允许在说明变量的时候对变量赋初值 例如 inta 5 b 10 2 doublex 23 568 y charch1 a ch2 66 ch3 142 表示定义变量并对变量存储单元赋值 错误的初始化 inta 3 b b 5 floatm n 23 16 17 例题解析 1 若有以下定义和语句 intu 010 v 0 x10 w 10 printf d d d n u v w 则输出结果是 A 8 16 10B 10 10 10C 8 8 10D 8 10 10 18 你能回答下面问题吗 2 4指针和指针变量 main floatx inty 19 2 4 1指针和指针变量的概念 变量的两个物理意义 变量的内容 变量的地址 19 2 4 1指针和指针变量的概念 main inta b c a 5 b 3 c a b 20 200020012002200320042005 abc 8 利用变量名存取数据的方式称为 直接存取 方式 20 C语言还提供了对内存单元的 间接存取 方式 21 5 3 2004 a和b相加的结果 p a b 存放到变量p所指向的内存单元中去 此时c称为指针变量p的目标变量 p c 8 main inta 5 b 3 c p p 变量的地址称为变量的指针 存放地址的变量称为指针变量 21 2 4 2指针变量的定义 main inta p 22 2004 2000 指针变量初始化 22 2 5运算符和表达式 主要内容 算术运算符和算术表达式赋值运算符和赋值表达式关系运算符和关系表达式逻辑运算符和逻辑表达式位运算符和位运算表达式条件运算符和条件表达式逗号运算符和逗号表达式其他运算符及其运算 23 运算符的有关概念 作用 对运算对象完成规定的操作运算类型 按运算对象分 单目 双目 三目按功能分 算术 赋值 关系 逻辑条件 逗号 位 其他 24 运算符的优先级和结合性 优先级指各种运算符号的运算优先顺序例如 算术运算优先于关系运算算术运算中先 后 25 结合性指运算符号和运算对象的结合方向分为 从左向右 左结合 和从右向左 右结合 例如 算术运算符为左结合a b 4赋值运算符为右结合a b 5 本章涉及的运算符 sizeof 数据类型标识符 26 表达式的有关概念 什么是表达式由运算符将运算对象连接成的式子 它描述了一个具体的求值运算过程 计算表达式的值按照运算符的运算规则求值求值时注意运算符的优先级和结合性表达式值的类型自动转换强制转换 27 例如 表达式 150 b 2 12 456b a 2a a a 2 f a b c a b c max a b a ba 3 a 3 a a1 float a 6 28 算术运算 算术运算符的优先级 29 没有乘方运算符 要计算a3要写作a a a的连乘 或用标准库函数pow a 3 的运算对象可为各种类型数据 但是当进行两个整型数据相除时 运算结果也是整型数据 要求运算对象必须是整型数据 功能是求两数相除的余数 余数的符号与被除数的符号相同 自增自减运算 是单目运算符有前缀和后缀两种形式前缀形式 先自增 自减 再引用 后缀形式 先引用再自增 自减 功能 前缀形式 a等价于a a 1 a等价于a a 1后缀形式a 等价于a a 1a 等价于a a 1 31 例如 当a 5时 a表达式的值为6 且a 6 a 表达式的值为5 且a 6 b a等价于a a 1 b a表达式的值为6 且a 6 b 6 b a 等价于b a a a 1表达式的值为5 且a 6 b 5 32 说明 和 的运算对象只能是变量 或运算结果是变量的表达式 不能是常量 或运算结果是数值的表达式 例如 5 a 2 不合法 具有右结合性 结合方向为从右到左 例如 a 等价于 a 如果有多个运算符连续出现时 C系统尽可能多的从左到右将字符组合成一个运算符例如 i j等价于 i j i j等价于 i j 33 赋值运算 赋值运算符 右结合 赋值表达式将表达式的值存入变量对应的内存单元中m 12b a 2m 3 n等价于m m 3 n x x 5 34 说明 赋值号左边必须是变量 右边可以是C语言任意合法的表达式例如 n t 210等价于 a b b c 10 赋值号与数学中的等号含义不同例如 数学中a b等价于b aC语言中a b不等价于b a 35 关系运算 关系运算符 左结合 c等价于a b c 与 a b c不等价关系运算符优先于赋值 低于算术 36 说明 关系运算的结果应该是逻辑值 C语言用数值用1表示逻辑真 0表示逻辑假例如 7 5的值是1 5 7的值是0 a b 的值是0 a b 的值是1即关系表达式的值 0或1实型数可进行大于或小于比较 但通常不进行 或 的关系运算 37 逻辑运算符 逻辑运算符 逻辑运算符的运算规则 38 逻辑表达式 逻辑表达式用逻辑运算符将运算对象连接成的式子例如 0 b a b c da b 5 c 4 x y z逻辑运算符的优先级和结合性 是单目运算符 右结合 高于算术 和 是双目运算符 左结合 高于赋值运算符 低于关系运算符 39 逻辑运算规则 从左到右依次进行逻辑计算运算对象为非0表示逻辑真运算对象为0表示逻辑假逻辑运算的结果为0或1例如设 a 15 b 0 c 2a b c结果为0a b c结果为1 a c b c结果为1 40 逻辑运算规则 续 运算按照从左至右的顺序进行 一旦能够确定逻辑表达式的值 就立即结束运算 逻辑运算的短路性质例如设 a 1 b 0 c 2a b c 41 a b c 为0 运算终止 表达式值为0 为非0 运算终止 表达式值为1且a为2 b为0 c为 2 b c保持原值 关系与逻辑运算符的应用 表示数学公式a b c判断a b c三条线段能否组成一个三角形a b不同时为负 42 a b c a c b b c a a 0 b 0 a 0 a 0 b 0 b 0 a b b c 条件表达式运算 条件运算符 条件表达式的一般形式表达式1 表达式2 表达式3例如 m 10 b 20 a bx 3 a 5 100 200 43 C语言中唯一的三目运算符 要正确区分用 和 分隔的表达式涉及条件运算符的优先级与结合性 条件运算符优先级 条件运算符优先级高于赋值 逗号运算符 低于其他运算符例如 m 10 b 20 a b x 3 a 5 100 200 44 等价于 m n x a 3 等价于 a 10 b 20 a b 等价于 x 3 a 5 100 200 条件运算符的结合性 条件运算符具有右结合性当一个表达式中出现多个条件运算符时 应该将位于最右边的问号与离它最近的冒号配对 并按这一原则正确区分各条件运算符的运算对象 45 例如 w x x w x y x y与w x x w x y x y 等价与 w x x w x y x y不等价 逗号表达式运算 逗号表达式的一般形式表达式1 表达式2 表达式n逗号表达式的值从左向右 依次对表达式求值 最后得到表达式n的值就是逗号表达式的值 46 例如 a 5 a a 3表达式值为18 且a 6 t 1 t 5 t 表达式值为1 且t 2 x a 3 5 a 4 赋值表达式的值为60 且x 60 a 15 位运算符 47 位运算符的运算对象只能是整型数据或字符型数据 不能是实型数据运算对象一律按二进制补码参加运算 并按位进行运算位运算的结果是一个整型数据 低于单目 算术运算符 高于其他运算符 低于单目 算术和关系运算符 高于其他运算符 位逻辑运算符的运算规则 假设ai和bi均是一个二进制位 bit 48 例如 假设a 10 b 010求a b a b a b a 程序如下 main inta 10 b 010 printf d d n a 49 输出结果 8102 11 0000000000001010 00000000000010000000000000001000即 a b的值是8 移位运算 例如 a b 1等价于 a 8 b 1 50 例如 假设a 10 b 2 求a b 1 main inta 10 b 2 printf d d n a b 1 输出结果 409 请自行分析运行结果 取地址运算符 为单目运算符运算对象只能是变量运算结果是变量的存储地址例如有定义 inta student charch 可以对变量a ch student进行 运算 a ch student 51 长度运算符sizeof 为单目运算符运算对象只能是变量名或数据类型标识符运算结果为该变量或该数据类型的长度 52 main inta 5 doublex printf d d sizeof int sizeof a printf d d sizeof double sizeof x printf d d n sizeof float sizeof char 输出结果 228841 运算中数据类型的转换 1 数据类型的自动转换转换原则 自动将精度低 表示范围小的运算对象类型向精度高 表示范围大的运算对象类型转换 53 例如有定义 inta charch 表达式 a ch 2 35La ch 2 35 2 数据类型的强制转换 强制转换的一般形式 类型名 表达式例如 int b 3 x 31 float a 6 54 注意 float 22 5与 float 22 5 不同错误的类型转换 int b a 5b int 3 a 3 赋值表达式中的类型转换 小数部分自动补0 55 自动舍去实型表达式的小数部分 注意不进行四舍五入 自动截取表达式值的低字节赋值 舍去高字节 自动给高字节补0或补1 重点 运算符的优先级和结合性类型转换 与 前缀与后缀不同 条件表达式位运算sizeof 例题解析 1 设x为int型变量 则执行以下语句后 x的值为 x 10 x x x x A 10B 20C 40D 302 以下合法的赋值语句是 A x y 100B d C x y D c int a b 3 若已定义X和Y为double型 则表达式 X 1 Y x 3 2的值是 A 1B 2C 2 0D 2 5 4 在以下一组运算符中 优先级最高的运算符是 A 10orA 10 A 10 A 10 A 0 7 设x y z t均为int型变量 则执行以下语句x y z 1 t x yt的值为 A 不定值B 2C 1D 08 设a 1 b 2 c 3 d 4则表达式a b a c d a d的结果为 A 4B 3C 2D 1 9 假定w x y z m均为int型变量 有如下程序段 w 1 x 2 y 3 z 4 m w x w x m m y m y m m z m z 则该程序运行后 m的值是A 4B 3C 3D 1 10 设intb 2 表达式 b 1 的值是 A 0B 2C 4D 811 以下程序的输出结果是 main intx 05 charz a printf d n x 1 z z A 0B 1C 2D 3 12 语句printf a bre hi y bou n 的输出结果是 A a bre hi y bouB a bre hi y bouC re hi youD abre hi y bou 说明 b 是退格符 13 以下程序的输出结果是main inta 5 b 4 c 6 d printf d n d a b a c a c b A 5B 4C 6D 不确定 14 已知i j k为int型变量 若从键盘输入 1 2 3 使i的值为1 j的值为2 k的值为3 以下选项中正确的输入语句是 A scanf 2d 2d 2dtt i j k B scanf d d d i j k C scanf d d d i j k D scanf i d j d k d t i j k 15 若有以下程序段intm 0 xabc n 0 xabc printf X x n m n 执行后输出结果是A 0Xabc0 xabcB 0 xABC0XabcC ABCabcD abcabc 16 设有以下程序段 intx 2002 y 2003 printf d n x y 则以下叙述正确的是 A 输出语句格式说明符的个数少于输出项的个数 不能正确输出B 运行时产生错误信息C 输出值为2002D 输出值为2003 17 有以下定义语句doublea b intw longc 若各变量已正确赋值 则下列选项中正确的表达式是A a a b b B w int a b C c w int aD w a b 18 若x和y代表整型数 以下表达式中不能正确表示数学关系 x y 10 x y10D x y x y 100 19 有以下程序main chara b c d scanf c c d d 若运行时从键盘上输入 6 5 65 66 则输出结果是 A 6 5 A BB 6 5 65 66C 6 5 6 5D 6 5 6 6 20 有以下程序段intm 0 n 0 charc a scanf d c d 若从键盘上输入 10A10 则输出结果是 A 10 A 10B 10 a 10C 10 a 0D 10 A 0 填空题 1 以下程序的输出结果是 main unsignedshorta 65536 intb printf d n b a 2 若有定义 inta 10 b 9 c 8 接着顺序执行下列语句后 变量b中的值是 c a b 5 c a 11 b 3 3 表示 整数x的绝对值大于5 时值为 真 的C语言表达式是 4 设x为int型变量 与逻辑表达式 x等价的最简单的C语言关系表达式为 5 设y为int型变量 请写出判断y为奇数的关系表达式 6 若已知a 10 b 20 则表达式 a b的值为 7 若想通过以下输入语句给a赋于1 给b赋于2 则输入数据的形式应该是 inta b scanf a b b d 9 若有语句inti 19 j j i 4 printf d n j 则输出结果是 10 有以下语句段 intn1 10 n2 20 printf n1 n2 要求按以下格式输出n1和n2的值 每个输出行从第一列开始 请填空 n1 10 n2 20 11 以下程序的输出结果是 main inta 0a a 8 printf d n a 12 有以下程序 includemain charc while c getchar putchar c 程序运行时 如果从键盘输入 Y N 则输出结果为 13 有以下程序 include main charch1 ch2 intn1 n2 ch1 getchar ch2 getchar n1 ch1 0 n2 n1 10 ch2 0 printf d n n2 程序运行时输入 12 执行后输出结果是 练习题 1 已知字母A的ASC 码为十进制的65 则下面程序的输出是 main charch1 ch2 ch1 A 5 3 ch2 A 6 3 printf d c n ch1 ch2 A 67 DB B CC C DD 不确定的值 2 设int型占2字节 则unsigendint所能表示的数据范围是A 0 65535B 32768 32767C 1 65536D 0 327673 在C语言中 设int型占2字节 下列不正确的int型常数为A 32768B 0C 037D 0 xaf 4 在C语言中不同数据类型的长度是A 固定的B 由用户自己定义的C 任意的D 与机器字长有关的5 下列四组 八进制或十六进制数 常数中 正确的一组是A 0160 xfb017B 0abc0170 xaC 010 x110 x16D 0A127FF 123 6 下列四组整型常量中 合法的一组是A 1600 xffff011B 0 xcdf01a0 xeC 019860120668D 0 x48a2e50 x7 在C语言中 合法的字符常数是A 084 B x43 C 84 D 0 8 下列不正确的转义字符是A B C 074 D 0 9 下列四个叙述中 错误的是A 在C程序中 无论是整数还是实数 都能被准确的表示B 在C程序中 变量名代表存储器中的一个位置C 静态变量的生存期与整个程序的运行期相同D C语言中的变量必须先说明后引用 10 当用 defineX23 6f定义后 下列叙述正确的是A X是实型常数B X是实型变量C X是一串字符D X是字符串常数11 当用constintA 9定义后 下列叙述正确的是A A是整型常数B A是整型变量C A是字符型常数D A是不定类型常数 12 有以下定义 chara intb floatc doubled 则表达式a b d c值的类型为A floatB intC charD double13 下列变量定义中合法的是 A short a 1 le 1 B doubleb 1 5e2 5 C longdo 0 xfdaL D float2 and 1 e 3 14 若已定义inta b 则语句 printf d a 2 的输出结果是 A 无输出B 结果不确定C 1D 115 当c的值不为0时 下列选项中能正确将C的值赋给变量a和b的是 A c b aB a c b c C a c b c D a c b 16 设有如下变量定义 inti 8 k a b unsignedlongw 5 doublex 1 42 y 5 2 则以下符合C语言语法的表达式是A a a b 4 a 3 B x 3 C a a 3 2D y float i 17 设已定义intk 7 x 12 则能使值为3的表达式是 A x k 5 B x k k 5 C x k k 5D x k k 5 18 以下程序main inta 12 b 12 printf d d n a b 的输出结果是 A 1010B 1212C 1110D 1113 19 有如下程序main inty 3 x 3 z 1 printf d d n x a y z 2 的输出结果是 A

温馨提示

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

评论

0/150

提交评论