前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >C语音之基本数据类型转换

C语音之基本数据类型转换

作者头像
兮动人
发布2021-07-21 11:05:49
5700
发布2021-07-21 11:05:49
举报
文章被收录于专栏:兮动人的博客

文章目录

基本数据类型转换

1. 自动类型转换

1. 自动类型转换

介绍:当 C 程序在进行赋值或者运算时,精度小的类型自动转换为精度大的数据类型,这个就是自动类型转换。

2. 数据类型按精度(容量)大小排序为

在这里插入图片描述
在这里插入图片描述

3. 数据类型自动转换表规则

在这里插入图片描述
在这里插入图片描述

4. 案例演示

  • 演示一下基本数据类型转换的基本情况。
代码语言:javascript
复制
#include<stdio.h>

void main(){
	char c1 = 'a';
	int num1 = c1;//ok
	double d1 = num1;//ok

	short s1 = 10;
	int num2 = 20;
	int num3 = s1 + num2;
	
	printf("d1=%f \n",d1);
	printf("num3=%d",num3);
	getchar();
}
在这里插入图片描述
在这里插入图片描述

5. 自动类型转换细节说明

  1. 有多种类型的数据混合运算时,系统首先自动将所有数据转换成精度最大的那种数据类型,然后再进行计算(如 int 型和 short 型运算时,先把 short 转成 int 型后再进行运算)。
  2. 若两种类型的字节数不同,转换成字节数大的类型,若两种类型的字节数相同,且一种有符号,一种无符号,则转换成无符号类型
  3. 在赋值运算中,赋值号两边量的数据类型不同时,赋值号右边的类型将转换为左边的类型,如果右边变量的数据类型长度比左边长时,将丢失一部分数据,这样会降低精度,丢失的部分按四舍五入向前舍入
  4. 代码演示:
代码语言:javascript
复制
#include<stdio.h>

void main(){
	float f1 = 1.1f;
	double d2 = 4.58667435;
	f1 = d2;//出现精度损失(double->float)
	printf("f1=%.8f",f1);
	getchar();
在这里插入图片描述
在这里插入图片描述

2. 强制类型转换

1. 强制类型转换

  • 介绍 将精度高的数据类型转换为精度小的数据类型。使用时要加上强制转换符 ( ),但可能造成精度降低或溢出,格外要注意。
  • 强制类型转换一般格式如下:
代码语言:javascript
复制
(类型名) 表达式

什么是表达式: 任何有值都可以称为表达式,比如 1+ 2, int num = 2

  • 这种强制类型转换操作并不改变操作数本身

2. 案例演示

代码语言:javascript
复制
#include<stdio.h>

void main(){
	double d1 = 1.934;
	int num1 = (int)d1;//注意:不进行四舍五入,而是直接截断小数点的部分

	printf("num1=%d d1=%f",num1,d1);
	getchar();
}
在这里插入图片描述
在这里插入图片描述

3. 强制类型转换细节说明

  1. 当进行数据的从 精度高——>精度低,就需要使用到强制转换
  2. 强转符号只针对于最近的操作数有效,往往会使用小括号提升优先级
  3. 案例演示:
  • (int)3.5 只针对这个数有效,转成 3,最后结果 39.0double型,强制转成 int 后去掉 0
代码语言:javascript
复制
int num2 = (int)3.5 * 10 + 6 * 1.5; // 3 * 10 + 6 * 1.5 = 30+9.0 = 39.0

printf("\n num2=%d",num2);
在这里插入图片描述
在这里插入图片描述
代码语言:javascript
复制
int num3 = (int)(3.5 * 10 + 6 * 1.5); // 35.0+9.0=44.0

printf("\n num3=%d",num2);
在这里插入图片描述
在这里插入图片描述

4. 基本数据类型转换-练习题

  • 判断是编译是否会通过?
代码语言:javascript
复制
char c = 'a';
int i = 5;
float d = .314F;
double result = c+i+d; // c+i+d 类型是 float -> double ok
  • 下面的还有一个案例
代码语言:javascript
复制
 #include <stdio.h>
void main() {
char c = 'a';
int i = 5;
float d = .314F;
double d2 = 1.0;
//double result = c+i+d; // float -> double
char result = c+i+d+d2; // 提示? // 警告 double -> char
}
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021/07/08 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 文章目录
  • 基本数据类型转换
    • 1. 自动类型转换
      • 1. 自动类型转换
      • 2. 数据类型按精度(容量)大小排序为
      • 3. 数据类型自动转换表规则
      • 4. 案例演示
      • 5. 自动类型转换细节说明
    • 2. 强制类型转换
      • 1. 强制类型转换
      • 2. 案例演示
      • 3. 强制类型转换细节说明
      • 4. 基本数据类型转换-练习题
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档