4-1 强制类型转化与隐式类型转化

#include <stdio.h>

int main()
{
    short s=0x1122;
    int i=(int) s;
    //强制类型转换 目标类型能容纳 结果不变
    char c=(char) s;
    //强制类型转换 目标类型不能容纳目标值 截断 高位舍弃 低位保留
    printf("0x%x\n",i);
    printf("0x%x\n",c);
    //强制类型转换由程序员主动进行

    char c1=s;
    //复制表达式中 隐式类型转换 转换为左边类型 目标类型不能容纳目标值 截断 高位舍弃 低位保留
    printf("0x%x\n",c1);

    char c2='a';
    int j=100;
    printf("%d\n",sizeof(c2+j));
    //算数运算中 隐式类型转换 低类型(char)转换为(int) 参与计算



    //隐式类型转换由编译器进行发生的情况:
    //1.算术表达式
    //2.赋值表达式
    //3.函数调用
    //4.函数返回值



    return 0;
}

在这里插入图片描述

1.强制类型转化由程序员主动进行,若目标类型能容纳目标值则结果不变,若目标类型无法容纳目标值,则高位舍弃低位保留。

2.隐式类型转化由编译器完成,发生在4种情况

隐式类型转换由编译器进行发生的情况:
1.算术表达式
2.赋值表达式
3.函数调用
4.函数返回值

原创文章 8 获赞 1 访问量 287

猜你喜欢

转载自blog.csdn.net/rororwww/article/details/105819986
4-1