从0学起的C语言笔记(二、类型转换)

本文详细介绍了C语言中的类型转换,包括自动转换和强制转换。自动转换遵循由小类型向大类型转换的原则,确保精度不降低。在表达式中,如果出现实数则全部转为double类型。在赋值语句中,右侧值会转换为左侧变量的类型。强制转换则通过类型说明符括号包裹表达式来实现。转换仅限于当前运算,不影响变量原有类型。了解这些基础知识对于C语言的学习至关重要。
摘要由CSDN通过智能技术生成

前言

数据有不同的类型,不同类型数据之间进行混合运算时必然涉及到类型的转换问题.

类型转换

自动转换:

遵循一定的规则,由编译系统自动完成.

自动转换的原则:

  1. 占用内存字节数少(值域小)的类型,向占用内存字节数多(值域大)的类型转换,以保证精度不降低.

  2. 转换方向:
    在这里插入图片描述
    当表达式中出现了 char 、short int 、int 类型中的一种或者多种,没有其他类型了 参加运算的成员全部变成 int 类型的参加运算,结果也是 int 类型的。

    #include <stdio.h>
    int main( ) {
        printf("%d\n",5/2);
        return 0; 
    }
    

    当表达式中出现了带小数点的实数,参加运算的成员全部变成 double 类型的参加运算,结果也是 double 型。

    #include <stdio.h>
    int main( ) { 
         printf("%lf\n",5.0/2);
         return 0; 
    }
    

    当表达式中有有符号数 也有无符号数,参加运算的成员变成无符号数参加运算结果也是无符号 数.(表达式中无实数)

    #include <stdio.h>
    int main( ) {
         int a=-8;
         unsigned int b=7;
         if(a+b>0)
         {
              printf("a+b>0\n");
         }
         else {
              printf("a+b<=0\n");
         }
         printf("%x\n",(a+b));
         printf("%d\n",(a+b));
         return 0; 
    }
    

    在赋值语句中等号右边的类型自动转换为等号左边的类型

    #include <stdio.h>
    int main( ) {
        int a;
        float b=5.8f;
        //5.8 后面加 f 代表 5.8 是 float 类型,不加的话,认为是double 类型 a=b;
        printf("a=%d\n",a); 
        return 0;
    }
    

强制转换

通过类型转换运算来实现 (类型说明符) (表达式)
功能
把表达式的运算结果强制转换成类型说明符所表示的类型
例如:
(float)a; // 把 a 的值转换为实型
(int)(x+y); // 把 x+y 的结果值转换为整型 注意:
类型说明符必须加括号

#include <stdio.h>
int main( ) {
    float x=0;
    int i=0;
    x=3.6f;
    i = x;
    i = (int)x;
    printf("x=%f,i=%d\n",x,i);
    return 0;
}

说明: 无论是强制转换或是自动转换,都只是为了本次运算的需要,而对变量的数据长度进行的临时性转换,而不改变数据定义的类型以及它的值.

结语

数据转换基础的东西比较少,下一条就正式开始基础C语言的学习——运算符。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值