C语言程序设计 课件 任务1.3 数据类型及转换_第1页
C语言程序设计 课件 任务1.3 数据类型及转换_第2页
C语言程序设计 课件 任务1.3 数据类型及转换_第3页
C语言程序设计 课件 任务1.3 数据类型及转换_第4页
C语言程序设计 课件 任务1.3 数据类型及转换_第5页
已阅读5页,还剩17页未读 继续免费阅读

下载本文档

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

文档简介

C语言程序设计基础与实践模块一编程技术基础任务1.3数据类型及转换C语言程序设计基础与实践课程组04技能点拓展03技能点详解02技能点分析目录CONTENTS任务1.3数据类型及转换01问题引入05技能点检测一问题引入

数据是事实或观察的结果,是对客观事物的逻辑归纳,是用于表示客观事物的未经加工的原始素材。

数据是信息的表现形式和载体,可以是符号、文字、数字、语音、图像、视频等。在大数据的时代,所有数据都可以存储到计算机系统中,那么数据在计算机系统内是如何存储的呢?04技能点拓展03技能点详解02技能点分析目录CONTENTS01问题引入05技能点检测任务1.3数据类型及转换二技能点分析1.了解C语言中的基本数据类型;2.掌握C语言中数据类型存储格式;3.掌握运算过程中数据类型转换规律。学习目标1.什么是数据类型?它有哪些种类?2.自动数据类型转换的规则是什么?3.强制类型转换的格式是什么?学期预习04技能点拓展03技能点详解02技能点分析目录CONTENTS01问题引入05技能点检测任务1.3数据类型及转换三技能点详解——1数据类型C语言中的数据类型可分为基本类型、构造类型、指针类型和空类型四大类,其中基本类型、构造类型又可细分,如图1.3.1所示。图1.3.1数据类型的分类三技能点详解——2数据类型转换数据类型转换就是将数据(变量、数值、表达式的结果等)从一种类型转换为另一种数据类型。类型转换分为自动类型转换和强制类型转换。1)自动类型转换

在不同类型的混合运算或赋值运算中,编译器会按照一定规则自动地转换数据类型,将参与运算的所有数据先转换为同一种类型,然后再进行计算或赋值。这种类型转换是不需要程序员干预,由编译器自动执行,我们把它称为自动类型转换。图1.3.1数据类型的分类三技能点详解——2数据类型转换自动类型转换的规则是:(1)转换按数据长度增加的方向进行,以保证精度不降低。如int型和long型运算时,先把int量转成long型后再进行运算。(2)所有的浮点运算都是以双精度进行的,即使仅含float单精度量运算的表达式,也要先转换成double型,再作运算。(3)char型和short型参与运算时,必须先转换成int型。三技能点详解——2数据类型转换在不同类型的赋值运算中的自动类型转换的规则是:赋值号两边量的数据类型不同时,赋值号右边量的类型将转换为左边量的类型。例如:

/*100是int类型的数据,需要先转换为float类型才能赋值给变量f。*/floatf=100;

如果右边量的数据类型长度左边长时,将丢失一部分数据,这样会降低精度,丢失的部分按四舍五入向前舍入。所以说,自动类型转换并不一定是安全的。对于不安全的类型转换,编译器一般会给出警告。三技能点详解——2数据类型转换2)强制类型转换

自动类型转换是编译器根据代码的上下文环境自行判断的结果,但有时并不是那么“智能”,不能满足所有的需求,这时就需要程序员使用强制类型转换来实现所需的转换。强制类型转换是显式的,程序员通过在代码中使用强制类型转换运算符来指定类型转换。强制类型转换的一般格式为:(新类型符号)表达式例如:(double)a;//将变量a强制转换为double类型(int)(x+y);//把表达式x+y的结果强制转换为int整型(float)100;//将数值100(默认为int类型)强制转换为float类型三技能点详解——2数据类型转换在使用强制转换时应注意以下问题:(1)类型说明符和表达式都必须加括号(单个变量可以不加括号),如把(int)(x+y)写成(int)x+y则成了把x转换成int型之后再与y相加了。(2)无论是强制转换或是自动转换,都只是为了本次运算的需要而对变量的数据长度进行的临时性转换,而不改变数据说明时对该变量定义的类型。04技能点拓展03技能点详解02技能点分析目录CONTENTS01问题引入05技能点检测任务1.3数据类型及转换四技能点拓展——1Typedef自定义数据类型typedef

unsigned

intmy_type;

通过这种方式定义,程序后面就可以向使用unsignedint一样的使用my_type。如果,在不同平台上移植一段代码,采用typedef格式能够实现一个自定义数据类型在不同平台上代表不同的数据类型,实现跨平台移植。例如,在A平台上

typedef

unsigned

intmy_type;My_typea;//a的范围是0-65536在B平台上定义

typedef

unsigned

charmy_type;My_typea;//a的范围是0-256Typedef自定义数据类型的格式:四技能点拓展——1define宏定义数据类型Typedef自定义数据类型的一般形式为:

#define

标识符

常量

//注意,最后没有分号………#undef

标识符

//解除对应的宏定义例如:#definePI3.1415926//用PI定义3.1415926,实现其功能………#undefPI//解除对应的宏定义

就是将PI定义为后面的3.1415926,在不需要定义的位置,增加#undefPI,解除宏定义。我们采用宏定义的这种特性对数据类型进行缩写,简化。例如:

#defineuintunsigned

int

//用uint定义为unsignedint,实现其功能#defineu8unsigned

char

//用u8定义为unsigned插入,实现其功能案例1.3.1数据的存储本案例为了得到某个类型或某个变量在特定平台上的准确大小,可以使用

sizeof

运算符。/********************************************************************内容简述:计算不同类型的存储空间*******************************************************************/#include

<stdio.h>

//函数头文件#include

<limits.h>

intmain(void)//主程序入口{printf("char存储大小:%u\n",sizeof(char));//输出字符型的存储字节数 printf("short存储大小:%u\n",sizeof(short));//输出短整型的存储字节数 printf("int存储大小:%u\n",sizeof(int));//输出整型的存储字节数 printf("long存储大小:%u\n",sizeof(long));//输出长整型的存储字节数/*************输出单精度型的存储字节数*************/ printf("float存储大小:%u\n",sizeof(float));/***********输出双精度型的存储字节数*************/ printf("double存储大小:%u\n",sizeof(double));

return0;}四技能点拓展——案例案例1.3.2数据的运算求整型量10与字符’a’的和,并将它赋给浮点型变量输出。/************************************************内容简述:求整型量10与字符’a’的和,并输出************************************************/#include

<stdio.h>

intmain(void){

inti=10;

chara='a';//ascii值是97

floatsum;sum=i+a;printf("Valueofsum:%f\n",sum);

return0;}四技能点拓展——案例案例1.3.3数据的转换某高校一学生在一周内的总生活费为200元,通过编程求该生的平均生活费为多少元/天?/*****************************************************内容简述:某高校一学生在一周内的总生活费为200元*通过编程求该生的平均生活费为多少元/天?*****************************************************/#include

<stdio.h>

intmain(void){

intsum=200;//总生活费

intcount=7;//总天数

doubleaverage;//平均数

average=(double)sum/count;printf("Averageis%.2f\n",average);

return0;}四技能点拓展——案例案例1.3.4

数据的比较在本案例中,假设圆的半径r=2,根据圆的面积公式s=πr2编写程序计算该圆的面积,并将面积存于整型变量s1和浮点型变量s2中。/********************************************内容简述:假设圆的半径r=2,根据圆的面积公式*s=πr2编写程序计算该圆的面积********************************************/#include<stdio.h>

intmain(void){

floatpi=3.14159;//定义浮点型变量pi存放圆周率,圆周率取值为3.14159

ints1,r=2;//定义整型变量s1和r分别存放面积和半径值

doubles2;//定义双精度浮点型变量s2存放面积

s1=

温馨提示

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

评论

0/150

提交评论