当前课程知识点:C语言程序设计 >  第3章 基本数据类型、运算符与表达式 >  3.6 数据类型转换 >  数据类型转换

返回《C语言程序设计》慕课在线视频课程列表

数据类型转换在线视频

下一节:格式化输出printf

返回《C语言程序设计》慕课在线视频列表

数据类型转换课程教案、知识点、字幕

同学们大家好

前面我们学习了数据类型

运算符

表达式

在程序中经常会遇到不同类型的数据进行运算

这时就需要将不同类型的数据

转换成同一种类型

然后进行运算

什么情况下需要进行转换呢

①运算转换 不同类型数据混合运算时

②赋值转换 把一个值赋给与其类型不同的变量时

③输出转换 输出时转换成指定的输出格式

④函数调用转换 实参与形参类型不一致时转换

C语言的数据类型允许相互转换

转换的方法有两种一种是自动转换

一种是强制转换 在一个赋值语句中

如果赋值运算符左侧变量的类型

和右侧表达式的类型不一致

那么赋值时将发生自动类型转换

类型转换的原则是

将右侧表达式的值转换成左侧变量的类型

我们先来看下这段程序

编译运行后可看到

将整型数23赋给float型时

数值不变

但以浮点数形式存储到变量中

char型数据赋给int型时

由于字符只占1个字节

而整型为4个型字节

因此将字符数据放到整型变量

存储单元的低8位中

将赋值数据赋给整型变量时

舍弃浮点数的小数部分

将一个double型数据赋值给float型变量时

截取其前面7位有效数字

存放到float变量的存储单元中

但应注意数值要在float变量所能容纳的范围之内

否则会出现溢出的错误

将一个int型数据赋给一个char型数据时

采用截取的方式只将其低8位原封不动地

送到char型变量

在进行表达式运算时

如果一个表达式中

混有多种不同的类型的操作数

则按照

先转换后运算

的原则

下面以图示的方式显示数据类型的转换方式

如字符型和短整型转换成整型

float型转换为double型

一般而言

将取值范围小的类型转换为

取值范围大的类型

自动类型转换是编译器根据代码的

上下文环境自行判断的结果

不能满足所有的需求

因此可以利用强制类型转换运算符

将一个表达式转换成所需类型

一般形式为

(类型说明符)后跟 (表达式)

功能是

把表达式的运算结果强制转换为

类型说明符所表示的类型

下面编程验证

编译运行后可看出在程序的第五行

将整型变量a的值按浮点型形式输出

第六行将x+y的结果按整型形式输出

这里要特别说明

无论是强制转换或是自动转换

都只是为了本次运算的需要

而对变量的数据类型进行的临时性转换

并不改变数据说明时对该变量定义的类型

C语言表达能力强

其中一个重要方面就在于它的表达式类型丰富

运算符功能强

因而使C语言使用灵活

适应性强

在后面得课程中将进一步看到这些优越性

到此我们关于C语言的运算符

和表达式的知识就学习到这

同学们 再见

C语言程序设计课程列表:

第1章 C语言程序设计预备知识

-计算思维与计算机

--计算思维与计算机

--计算思维与计算机

--计算思维和计算机

第2章 C语言程序设计基础

-2.1 程序设计语言的发展及其特点和应用

--程序设计语言的发展及其特点和应用

--程序设计语言的特点及发展

- 2.2 C语言程序的基本结构及编制C语言程序的基本步骤

-- C语言程序的基本结构及编制C语言程序的基本步骤

--C语言程序的结构和编制步骤

第3章 基本数据类型、运算符与表达式

-3.1 C语言的数据类型

--C语言的数据类型

--C语言的数据类型

-3.2 常量

--常量

--常量

-3.3 什么是变量

--什么是变量

--什么是变量

-3.4 如何进行算术运算

--如何进行算术运算

--如何进行算术运算

-3.5 赋值运算符和逗号运算符

--赋值运算符和逗号运算符

--赋值运算符和逗号运算符

-3.6 数据类型转换

--数据类型转换

--数据类型转换

第4章 基本输入输出和顺序程序设计

-4.1 格式化输出printf

--格式化输出printf

--格式化输出

-4.2 格式化输入scanf及字符数据的非格式化输入输出

--格式化输入scanf及字符数据的非格式化输入输出

--格式化输入

第5章 选择结构程序设计

-5.1 关系运算符和关系表达式

--关系运算符和关系表达式

--关系运算符和关系表达式

-5.2 逻辑运算符和逻辑表达式

--逻辑运算符和逻辑表达式

--逻辑运算符和逻辑表达式

-5.3 条件运算符和条件表达式

--条件运算符和条件表达式

--条件运算符和条件表达式

-5.4 if语句

--if语句

--if语句

-5.5 switch语句

--switch语句

--switch语句

第6章 循环结构程序设计

-6.1 while语句

--while语句

--while语句

--do-while语句

-6.2 for语句

--for语句

--for语句

-6.3 循环的嵌套

--循环的嵌套

--循环的嵌套

-6.4 break语句和continue语句

--break语句和continue语句

--break和continue语句

第7章 数组

-7.1 一维数组的定义和引用

--一维数组的定义和引用

--一维数组的定义和引用

-7.2 一维数组的赋值

--一维数组的赋值

--一维数组的赋值

-7.3 二维数组的定义和引用

--二维数组的定义和引用

--二维数组的定义和引用

-7.4 二维数组的赋值

--二维数组的赋值

--二维数组的赋值

-7.5 字符串的本质

--字符串的本质

--字符串的本质

-7.6 字符串操作的常用函数

--字符串操作的常用函数

--字符串常用函数

-7.7 字符串数组

--字符串数组

--字符串数组

第8章 函数

-8.1 函数概述

--函数概述

--函数概述

-8.2 有参函数

--有参函数

--有参函数

-8.3 函数参数的传递方式

--函数参数的传递形式

--函数参数的传递方式

-8.4 变量的作用域和生存期

--变量的作用域和生存期

--变量的作用域和生存期

-8.5 变量的存储类型

--变量的存储类型

--变量的存储类型

-8.6 函数的嵌套和递归调用

--函数的嵌套和递归调用

--函数的嵌套和递归调用

-8.7 函数的作用域与封装

--函数的作用域与封装

--函数的作用域与封装

第9章 指针

-9.1 指针变量的概念(上)

--指针变量的概念(上)

--指针变量的概念(上)

-9.2 指针变量的概念(下)

--指针变量的概念(下)

--指针变量的概念(下)

-9.3 指向一维数组的指针变量

--指向一维数组的指针变量

--指向一维数组的指针变量

-9.4 指向二维数组的指针变量(上)

--指向二维数组的指针变量

--指向二维数组的指针变量(上)

-9.5 指向二维数组的指针变量(下)

--指向二维数组的指针变量(下)

--指向二维数组的指针变量(下)

-9.6 动态内存分配

--动态内存分配

--动态内存分配

第10章 预处理命令

-10.1 编译预处理

--编译预处理

第11章 复杂数据类型

-11.1 用户自己建立数据类型

--用户自己建立数据类型

--用户自己建立数据类型

-11.2 定义结构体类型变量

--定义结构体类型变量

--定义结构体类型变量

-11.3 结构体变量的引用与初始化

--结构体变量的引用与初始化

-11.4 结构体数组

--结构体数组

--结构体数组

-11.5 指向结构体类型数据的指针

--指向结构体类型数据的指针

--指向结构体类型数据的指针

第12章 文件

-12.1 文件的基本概念和文件指针

--文件的基本概念和文件指针

--文件的基本概念和文件指针

-12,2 文件的打开和关闭

--文件的打开和关闭

--文件的打开和关闭

-12.3 文本文件读写

--文本文件读写

--文本文件读写

-12.4 二进制文件读写

--二进制文件读写

--二进制文件读写

数据类型转换笔记与讨论

也许你还感兴趣的课程:

© 柠檬大学-慕课导航 课程版权归原始院校所有,
本网站仅通过互联网进行慕课课程索引,不提供在线课程学习和视频,请同学们点击报名到课程提供网站进行学习。