




已阅读5页,还剩52页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第2章数据类型与表达式 C 语言程序设计教程第2章数据类型与表达式 C 语言程序设计教程第1章C 编程简介 第2章数据类型与表达式 学习目标 掌握各种基本数据类型的定义名 长度 表示范围 掌握各种类型的数值的表示 弄清变量以及变量赋值的实质 标识符的构成规则 会定义各种类型的变量以及定义变量的初值 弄清变量与常量 三种常量之间的区别 掌握常用运算符的含义 优先级 结合性 使用方法 理解表达式的构成规则 表达式的左值和右值的含义 会根据计算式写出相应的表达式 掌握隐式类型转换和显式类型转换的概念和使用方式 能够使用显式类型转换强制进行表达式值的转换 C 语言程序设计教程第2章数据类型与表达式 C 语言程序设计教程第1章C 编程简介 2 1数据类型概述数据类型是指定义了一组数据以及定义在这一组数据的操作 它是程序中最基本的元素 C 语言程序设计教程第2章数据类型与表达式 2 1 1基本类型基本数据类型有4种 整型 int 浮点型 float 字符型 char 逻辑型 bool 整型数在计算机内部一般采用定点表示法 用于存储整型量 如123 7等 存储整数的位数依机器的不同而异 浮点数和整数不同的地方是浮点数采用的是浮点表示法 也就是说 浮点数的小数点的位置不同 给出的精度也不相同 字符类型表示单个字符 一个字符用一个字节存储 逻辑类型 也称布尔类型 表示表达式真和假 C 语言程序设计教程第2章数据类型与表达式 2 1 2空类型void空类型void用于显示说明一个函数不返回任何值 还可以说明指向void类型的指针 说明以后 这个指针就可指向各种不同类型的数据对象 C 语言程序设计教程第2章数据类型与表达式 2 1 3构造类型构造类型又称为组合类型 它是由基本类型按照某种规则组合而成的 数组 是由具有相同数据类型的元素组成的集合 结构体 是由不同的数据类型构成的一种混合的数据结构 构成结构体的成员的数据类型一般不同 并且在内存中分别占据不同的存储单元 共用体 是类似于结构体的一种构造类型 与结构体不同的是构成共同体的数据成员共用同一段内存单元 枚举 是将变量的值一一列举出来 变量的值只限于列举出来的值的范围内 C 语言程序设计教程第2章数据类型与表达式 2 1 4指针类型指针类型变量用于存储另一变量的地址 而不能用来存放基本类型的数据 它在内存中占据一个存储单元 2 1 5类类型类是体现面向对象程序设计的最基本特征 也是体现C 与C最大的不同之处 类是一个数据类型 它定义的是一种对象类型 由数据和方法组成 描述了属于该类型的所有对象的性质 C 语言程序设计教程第2章数据类型与表达式 2 2常量 常量是指在程序运行过程中其值不能改变的量 C 支持5种类型的常量 浮点型 整型 字符型 布尔型和枚举型 常量在程序中一般以自身的存在形式体现其值 常量具有类型属性 类型决定了各种常量在内存中占据存储空间的大小 C 语言程序设计教程第2章数据类型与表达式 2 2 1整型常量整型数据表示通常意义上的整数 整型常量可以用十进制 八进制或十六进制表示 1 十进制常量一般占一个机器字长 是一个带正负号的常数 默认情况下为正数 如 3 7等 2 八进制常量由数字0开头 其后由若干0 7的数字组成 如0374 0123等 3 十六进制常量以0 x或0X开头 其后由若干0 9的数字及A F 或小写a f 的字母组成 如0 x173 0 x3af C 语言程序设计教程第2章数据类型与表达式 整型常量可以后跟字母l或L表示long型 长整数 也可以跟u或U表示unsigned整数 无符号整数 如以下数是合法的 375u 无符号整数12345UL 无符号长整数54321L 长整数13579ul 无符号长整数 C 语言程序设计教程第2章数据类型与表达式 2 2 2浮点数常量浮点数也称为实型数 只能以十进制形式表示 共有两种表示形式 小数表示法和指数表示法 1 小数表示法使用这种表示形式时 实型常量分为整数部分和小数部分 其中的一部分可在实际使用时省略 如10 2 2 2 等 但整数和小数部分不能同时省略 2 指数表示法也称科学记数法 指数部分以E或e开始 而且必须是整数 如果浮点数采用指数表示法 则E或e的两边都至少要有一位数 如以下数是合法的 1 2e20 3 4e 2 C 语言程序设计教程第2章数据类型与表达式 2 2 3字符常量与字符串常量1 字符常量C 中的字符常量通常是用单引号括起的一个字符 在内存中 字符数据以ASCII码存储 如字符 a 的ASCII码为97 字符常量包括两类 一类是可显字符 如字母 数字和一些符号 等 另一类是不可显字符常量 如ASCII码为13的字符表示回车 2 转义字符转义字符是特殊的字符常量 表示时一般以转义字符 开始 后跟不同的字符表示不同的特殊字符 表2 1列出了常用的特殊字符 C 语言程序设计教程第2章数据类型与表达式 C 语言程序设计教程第1章C 编程简介 表2 1常用预定义的转义序列 C 语言程序设计教程第1章C 编程简介 转义序列的用法举例 运行结果 A B C D E F 屯屯 注意 由于一个汉字字符包括两个字符 因此不能在单引号中使用汉字 3 字符串常量字符串常量是由一对双引号括起来的零个或多个字符序列 字符串可以写在多行上 不过在这种情况下必须用反斜线 表示下一行字符是这一行字符的延续 字符串常量实际上是一个字符数组 组成数组的字符除显示给出的外 还包括字符结尾处标识字符串结束的符号 0 所以字符串 abc 实际上包含4个字符 a b c 和 0 需要注意的是 a 和 a 的区别 a 是一个字符常量 在内存中占一个字节的存储单元 而 a 是一个字符串常量 在内存中占两个字节 除了存储 a 以外 还要存储字符串结尾符 0 C 语言程序设计教程第2章数据类型与表达式 2 2 4布尔常量布尔常量仅有两个 false 假 和true 真 C 语言程序设计教程第2章数据类型与表达式 2 2 5枚举常量枚举常量可以通过建立枚举类型来定义 枚举类型是一种用户自定义数据类型 在声明枚举类型时 需要把常量的值一一列举出来 形式如下 enum枚举类型名 常量值1 常量值2 常量值n 例如声明一个名为color的枚举类型 enumcolor Red Green Blue White Black 枚举常量是一种符号常量 Red Green等是符号常量 它们表示各个枚举值 在内存中表示以整型数 如果没有专门指定 第一个符号常量的枚举值就是0 其他枚举值依次为1 2 3 所以 C 自动给Red赋0 Green赋1 等等 C 语言程序设计教程第2章数据类型与表达式 2 3变量 变量是指程序在运行时其值可改变的量 每个变量由一个变量名惟一标识 同时 每个变量又具有一个特定的数据类型 不同类型的变量在内存中占有存储单元的个数不同 C 语言程序设计教程第2章数据类型与表达式 2 3 1变量名命名变量名的命名要遵守以下规则 不能是C 保留字 C 的保留字如表2 2所列 第一个字符必须是字母或下划线 中间不能有空格 变量名除了使用26个英文大小写字母和数字外 只能使用下划线 一般不要超过31个字符 变量名不要与C 中的库函数名 类名和对象名相同 例如 下列变量名是合法的变量名 a123c3bfile 1 C 语言程序设计教程第2章数据类型与表达式 表2 2C 的标准保留字 C 语言程序设计教程第2章数据类型与表达式 2 3 2变量定义和说明C 中 变量使用之前一定要定义或说明 变量定义的格式一般为 修饰符 类型变量名 注释 其中 类型指出变量所存放的数据的类型 变量名是任意合法的变量名 注释指明该变量的含义和用途 修饰符进一步描述了变量的使用方式 修饰符和注释是任选的 可以没有 C 语言程序设计教程第2章数据类型与表达式 多个同一类型的变量可以在一行中定义 中间用逗号隔开 也可以分别定义 例如 inta b c 定义3个整型变量a b c和inta 定义整型变量aintb 定义整型变量bintc 定义整型变量c二者等价 C 语言程序设计教程第2章数据类型与表达式 2 3 3变量初始化变量初始化一般采用两种方式 第一种方式是在定义变量时可以给变量赋一个初值 例如 inta 3 floatb 3 4 constintc 5 第二种方式是先定义变量 然后通过赋值语句使变量初始化 例如 inta a 3 C 语言程序设计教程第2章数据类型与表达式 C 语言程序设计教程第1章C 编程简介 C 语言程序设计教程第2章数据类型与表达式 C 符号常量的定义形式如下 例如 defineMaxChar255 definePI3 14 符号常量 define符号常量名数值 注意 定义符号常量时不能用赋值符 definePI 3 14是错误的 由于define是预处理指令 语句不能以分号结尾 C 为符号常量提供了一种新方法 格式为 常变量 const数据类型符号常量名 数值 const可以与数据类型说明颠倒 用const修饰后 变量的值就不能改变了 实质上是一种 常变量 C 语言程序设计教程第1章C 编程简介 C 语言程序设计教程第2章数据类型与表达式 例如 constshortintMaxChar 255 constfloatPI 3 14 注意 在定义常变量时一定要赋初值 例如 constfloatPI 错误 定义时没有给出初值常变量不是变量 在程序中间不能更新其值 例如 PI 3 14159 错误 常量不能被改变 2 4运算符与表达式 在程序中 表达式是计算求值的基本单位 它是由运算符和运算数组成的式子 运算符是表示进行某种运算的符号 运算数包含常量 变量和函数等 C 语言的运算符按其在表达式中与运算对象的关系 连接运算对象的个数 可分为 单目运算 一元运算符 只需一个操作数 双目运算 二元运算符 需两个操作数 三目运算 三元运算符 需三个操作数 C 语言程序设计教程第2章数据类型与表达式 按其在表达式中所起的作用又可分为 算术运算符 关系运算符 逻辑运算符 位运算符 自增自减运算符 赋值运算符 及其扩展 等 条件运算符 指针运算符 和 逗号运算符 分量运算符 函数调用运算符 下标运算符 求字节运算符sizeof强制类型转换运算符 type C 语言程序设计教程第2章数据类型与表达式 2 4 1算术运算符算术运算符有双目运算和单目运算两种 包括 加法运算符 或正值运算符 如1 2 3 减法运算符 或负值运算符 如1 2 3 乘法运算符 如1 2 除法运算符 如1 2 模运算符或称求余运算符 如7 3 1 C 语言程序设计教程第2章数据类型与表达式 2 4 2赋值运算符 1 赋值运算符 的一般格式为 变量 表达式 表示将其右侧的表达式求出结果 赋给其左侧的变量 例如 inti i 3 4 5 i的值变为27 2 赋值表达式本身的运算结果是右侧表达式的值 而结果类型是左侧变量的数据类型 例如 inti 1 2 3 结果为3 而不是3 6 C 语言程序设计教程第2章数据类型与表达式 3 赋值运算符的结合性是从右至左的 因此 C 程序中可以出现连续赋值的情况 例如 下面的赋值是合法的 inti j k i j k 10 i j k都赋值为10 4 复合运算符 加赋值 减赋值 乘赋值 除赋值 取模赋值 右移赋值 与赋值 异或赋值 或赋值 C 语言程序设计教程第2章数据类型与表达式 它们的含义如下 a b等价于a a ba b等价于a a ba b等价于a a ba b等价于a a ba b等价于a a ba b等价于a a ba b等价于a a ba b等价于a a ba b等价于a a b C 语言程序设计教程第2章数据类型与表达式 例如 inta 12 a a 表示a a a 12 12 24 又例如 inta 12 a a a a 表示a a a a 12 12 144a a a a 144 144 0a a a a 0 0 0 C 语言程序设计教程第2章数据类型与表达式 2 4 3关系运算符 1 关系运算符用于两个值进行比较 运算结果为true 真 或false 假 分别用值非0 true 或0 false 表示 C 中的关系运算符如下 大于 大于等于 等于 不等于 2 关系运算符都是双目运算符 其结合性是从左到右 运算符的优先级相同 和 运算符的优先级相同 前者运算的优先级高于后者 3 关系运算符的优先级低于算术运算符 例如 a b c等价于 a b ca b c等价于a b c C 语言程序设计教程第2章数据类型与表达式 2 4 4逻辑运算符 逻辑与 逻辑或 逻辑非 逻辑表达式的结果为真则为1 结果为假则为0 逻辑非 是单目运算符 逻辑与 与逻辑或 为双目运算符 逻辑非的优先级最高 逻辑与次之 逻辑或最低 逻辑运算真值表如表2 3所示 C 语言程序设计教程第2章数据类型与表达式 表2 3逻辑运算真值 真为非0 假为0 C 语言程序设计教程第2章数据类型与表达式 2 4 5自增 自减运算符 1 自增 自减 运算符为变量的增1和减1提供了紧凑格式 2 自增 自减运算符都是单目运算符 其作用是使变量的值增1或减1 3 自增 自减运算符有四种应用格式 inta 3 b a 等价于b a a a 1 inta 3 b a 等价于b a a a 1 运算符后置用法 代表先使用变量 然后对变量增值 inta 3 b a 等价于a a 1 b a inta 3 b a 等价于a a 1 b a 运算符前置用法 代表先对变量增值 再使用变量 C 语言程序设计教程第2章数据类型与表达式 4 C 编译器在处理时尽可能多的自左向右将运算符结合在一起 例如 a b表示为 a b而不是a b C 语言程序设计教程第2章数据类型与表达式 2 4 6条件运算符 1 条件运算符 是C 中惟一三目运算符 其形式为 表达式1 表达式2 表达式3它的运算方式为 先计算表达式1的值 如果其值为非0 真 则表达式2的值就是整个表达式的最终结果 否则表达式3的值就是整个表达式的值 常见的一个例子为 max a b a b 上面例子定义了一个求两个数a和b中最大值 其中决定哪一个是最大值用了条件运算符 C 语言程序设计教程第2章数据类型与表达式 2 条件运算符的结合性是自右向左 例如有以下条件表达式 a b a c d c d相当于a b a c d c d 3 条件运算符的优先级别高于赋值运算符 低于关系运算符和算术运算符 例如有 a b a b b a相当于a b a b b a C 语言程序设计教程第2章数据类型与表达式 2 4 7位运算符 1 位 bit 是计算机中表示信息的最小单位 一般用0和1表示 一个字符在计算机中用8个位表示 8个位组成一个字节 C 语言需要将人们通常所习惯的十进制数表示为二进制 八进制或十六进制数来理解对位的操作 C 中所有的位运算符如下 按位求反 右移 按位与 按位异或 按位或 2 位运算符是对其操作数按其二进制形式逐位进行运算 参加位运算的操作数必须为整数 C 语言程序设计教程第2章数据类型与表达式 2 4 8sizeof运算符 求字节运算符 1 sizeof运算符是单目运算符 用于计算运算对象在内存中所占字节的多少 它有两种形式 sizeof 类型标识符 sizeof表达式 2 sizeof可以接受的类型标识符很多 如sizeof int 表示求整型数据在内存中所占字节数 例如 inta 则sizeof a 表示求变量a在内存中所占字节数 例如 inta 10 则sizeof a 表示求数组a在内存中所占字节数 C 语言程序设计教程第2章数据类型与表达式 2 4 9逗号运算符 1 逗号运算符用于将多个表达式连在一起 并将各表达式从左到右的顺序依次求值 但只有其最右端的表达式的结果 作为整个逗号表达式的结果 2 逗号表达式的一般格式为 表达式1 表达式2 表达式n例如 inta 3 b 4 c 5 a b b c c a 则先求解a b 再求解b c 最后求解c a 整个表达式的结果为c a的结果 C 语言程序设计教程第2章数据类型与表达式 2 4 10运算符优先级 1 运算符优先级决定了在表达式中各个运算符执行的先后顺序 高优先级运算符先于低优先级运算符进行运算 在优先级相同的情形下 则按从左到右的顺序进行运算 2 当表达式中出现了括号时 会改变优先级 先计算括号中的子表达式值 再计算整个表达式的值 C 语言程序设计教程第2章数据类型与表达式 3 运算符的结合方式有两种 左结合和右结合 左结合表示运算符优先与其左边的标识符结合进行运算 如加法 右结合表示运算符优先与其右边的标识符结合 如单目运算符 4 同一优先级的优先级别相同 运算次序由结合方向决定 如1 2 3 和 的优先级别相同 其结合方向自左向右 则等价于 1 2 3 5 不同的运算符要求有不同的运算对象个数 单目运算符只需一个运算对象 如i a sizeof b 等 C 语言程序设计教程第2章数据类型与表达式 2 4 11表达式表达式是用于计算的式子 它由运算符 运算数和括号组成 最简单的表达式只有一个常量或变量 当表达式中有两个或多个运算符时 表达式称为复杂表达式 其中运算符执行的先后顺序由它们的优先级和结合性决定 执行表达式所规定的运算 所得到的结果值便是表达式的值 C 中由于运算符很丰富 因此表达式的种类也很多 常用的表达式有6种 C 语言程序设计教程第2章数据类型与表达式 1 算术表达式由算术运算符和位操作运算符组成的表达式 其表达式的值是一个数值 表达式的类型由运算符和运算数确定 例如 a 3 b 2 就是一个算术表达式 2 逻辑表达式由逻辑运算符组成的表达式 其表达式的值的类型为逻辑型 一般地 真用1表示 假用0表示 例如 a b c就是一个逻辑表达式 C 语言程序设计教程第2章数据类型与表达式 3 关系表达式由关系运算符组成的表达式 其表达式的值的类型为逻辑型 一般地 真用1表示 假用0表示 例如 a b c就是一个关系表达式 4 赋值表达式由赋值运算符组成的表达式 例如 已知a b就是一个赋值表达式 C 语言程序设计教程第2章数据类型与表达式 5 条件表达式由三目运算符组成的表达式 条件表达式的值取决于 号前面的表达式 该表达式的值为非0时 整个表达式的值为 号前面表达式的值 否则为 号后面表达式的值 条件表达式的类型是 号前和 号后两个表达式中类型高的一个表达式的类型 例如 a b a b就是一个条件表达式 6 逗号表达式用逗号将若干个表达式连起来组成的表达式 该表达式的值是组成逗号表达式的若干个表达式中最后一个表达式的值 类型也是最后一个表达式的类型 逗号表达式计算值的顺序是从左至右逐个表达式分别计算 例如 a 3 b 4 c 5就是一个逗号表达式 C 语言程序设计教程第2章数据类型与表达式 C 语言程序设计教程第1章C 编程简介 C 语言程序设计教程第2章数据类型与表达式 例2 2 演示算术运算表达式的用法 表达式的使用 运行结果 103523 33043 C 语言程序设计教程第1章C 编程简介 C 语言程序设计教程第2章数据类型与表达式 例2 3 演示逻辑运算表达式的用法 表达式的使用 运行结果 011122212 C 语言程序设计教程第1章C 编程简介 C 语言程序设计教程第2章数据类型与表达式 例2 4 演示逻辑运算表达式的用法 表达式的使用 运行结果 102010102030 C 语言程序设计教程第1章C 编程简介 C 语言程序设计教程第2章数据类型与表达式 1 自动转换 C 语言支持不同数据类型的数据之间的混合运算 在对这样的表达式求值时 需要对其中的一些操作数进行类型转换 表达式中的类型转换有两种方式 自动转换和强制转换 各种类型的高低顺序如下所示 2 5类型转换 1 若参与运算量的类型不同 则先转换成同一类型 然后进行运算 转换按数据长度增加的方向进行 以保证精度不降低 且运算的结果 即表达式的值 的类型是运算式的最终类型 2 所有的浮点型运算都是以双精度进行的 即使仅含float单精度运算的表达式 也要先转换成double型 再作运算 C 语言程序设计教程第1章C 编程简介 C 语言程序设计教程第2章数据类型与表达式 3 bool char型和short型参与运算时 必须先转换成int型 4 逻辑运算符要求参与运算的操作数必须是bool型 如果操作数是其它类型 编译系统会自动将非0数据转换为true 0转换为false 5 位运算的操作数必须是整数 当二元位运算的操作数是不同类型的整数时 也会自动进行类型转换 6 在赋值运算中 赋值号两边的数据类型不同时 赋值号右边量的类型将转换为左边量的类型 如果右边量的数据类型长度比左边长时 可能丢失一部分数据 或降低精度 floatpi 3 1 降低了精度floatf 3 5 未降低精度 7 将signed型的整型变成较长的signed型的整型 unsigned型变成较长的整型时 原值以及正负符号不变 inta 2 longb a b的值仍为 2 C 语言程序设计教程第1章C 编程简介 C 语言程序设计教程第2章数据类型与表达式 8 将unsigned型和同长度的signed型互变时 其值根据自身所属范围发生适当的变化 unsignedshorta 65535 shortintb a b的值变成 1shortinta 2 unsignedshortb a b的值变成65534 假设定义变量为 charc 1 floatf 3 1 表达式 3 f B c 1 0 f的类型转换图如下 C 语言程序设计教程第1章C 编程简介 C 语言程序设计教程第2章数据类型与表达式 2 强制类型转换 旧式的C语言风格的强制类型转换的格式如下 类型说明符 表达式 或 类型说明符 表达式 例如 int a b 将a b运算的结果转换成int型5 float 3 将3转换成float型 in
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 相机生产流程与质量控制考核试卷
- 探索共享汽车之路
- 嘉兴市重点中学2025届高三第八次模拟考试英语试题含解析
- 山东省兖州市第一中学2024-2025学年高三下开学检测试题语文试题含解析
- 四川省乐山市重点名校2024-2025学年新初三下开学适应性考试语文试题试卷含解析
- 辽宁省阜新实验中学2025届初三下学期质量调查(一)化学试题含解析
- 四川省简阳市养马区市级名校2025届初三二模突破冲刺生物试题(一)含解析
- 南阳市西峡县2024-2025学年数学四下期末检测模拟试题含解析
- 济南工程职业技术学院《唱腔》2023-2024学年第一学期期末试卷
- 山东旅游职业学院《针灸推拿基本功训练》2023-2024学年第一学期期末试卷
- GA 1812.2-2024银行系统反恐怖防范要求第2部分:数据中心
- 2025至2030中国智慧消防行业发展状况及未来前景研究报告
- 联锁系统设备调试施工作业指导书
- 热网工程施工组织设计方案
- 2025年上半年黑龙江牡丹江市“市委书记进校园”活动暨“雪城优才”企事业单位人才招聘1324人重点基础提升(共500题)附带答案详解
- 2024年陕西高中学业水平合格性考试生物试卷真题(含答案)
- 2024《整治形式主义为基层减负若干规定》全文课件
- 中考数学二元一次方程专题训练100题(含答案)
- 野外生存优秀课件
- 箱庭疗法-沙盘游戏治疗技术课件
- YY∕T 0953-2020 医用羧甲基壳聚糖(高清正版)
评论
0/150
提交评论