首页 > 编程语言 > 详细

C语言基本数据类型转换

时间:2021-01-04 23:20:17      阅读:32      评论:0      收藏:0      [点我收藏+]

基本数据类型转换

1.自动类型转换

1.1介绍

  • 当C程序在进行赋值或者运算时,精度小的类型自动转换为精度大的类型,这就是自动类型转换

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

short --> int --> unsigned int --> long --> unsigned long --> float --> double --> long double

1.3 数据类型自动转换表规则

1.4 自动类型转换细节说明

  • 有多种类型的数据混合运算时,系统首先自动将所有数据转换成精度最大的那种数据类型,然后再进行计算(如int 型和 short 型运算时,先把short转成int后再进行计算)
  • 若两种类型的字节输不同,转换成字节数大是类型,若两种类型字节数相同,且一种有符号,一种无符号,则转换成无符号类型
  • 在赋值运算中,复制号两边量的数据类型不同时,赋值号右边的类型将转换成左边的类型,如果右边变量的数据类型长度比左边长时,将丢失一部分数据,这样会降低精度,丢失的部分按四舍五入向前舍入
  • 代码演示
#include <stdio.h>
void main(){
    
    char c1 = ‘a‘;
    int num1 = c1;
    double d1 = num1;
    
    short s1 = 10;
    int num2 = 20;
    int num3 = s1 + num2;
    
    float f1 = 1.1f ;
    double d2 = 4.24232346576;
    f1 = d2 ;//出现精度损失
    printf("f1=%.8f",f1);
    getchar();
    
}

2.强制类型转换

2.1 介绍

  • 将精度高的数据类型转换成精度小的数据类型。使用时要加上强制转换符(),但可能造成精度降低或溢出。

2.2 强制类型转换操作一般格式

  • (类型名)表达式
  • 什么是表达式:任何有值都可以称为表达式
  • 这种强制类型转换操作并不改变操作数本身

2.3 案例演示

#include <stdio.h>

void main(){
    
    double d1 = 1.978;
    int num = (int)d1; //注意不是四舍五入,而是直接截断小数后的部分
    
    //强制转换只对最近的数有效,如果希望针对更多的表达式转换,使用()
    int num2 = (int)3.5 * 10 + 6 * 1.5;
    int num3 = (int)(3.5*10+6*1.5);
    
    printf("num3 = %d",num3);
    printf("num = %d d1 = %f",num,d1);
    
    getchar();
}

2.4 强制类型转换细节说明

  • 当进行数据的从 精度高到精度低 ,就需要使用强制转换
  • 强制转换只针对最近的操作数有效,往往会使用小括号提升优先级

2.5 练习

#include <stdio.h>

void main(){
    
    char c = ‘a‘;
    int i = 5;
    float d = .231f;
    double d2 = 1.0;
    
    double result = c + i + d;
    char result = c + i + d + d2;//出现警告
    
    getchar();
}

C语言基本数据类型转换

原文:https://www.cnblogs.com/mx-info/p/14231968.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!