zoukankan      html  css  js  c++  java
  • 类型转换

    类型转换

    类型之间的转换:

    • 强制类型转换
    • 隐式类型转换
    int main()                                             
    {
        long l = 800;
        int i = (int) l;
        return 0;
    }
    
    int main()
    {
        int i = 280;
        char a = i;
        return 0;
    }
    

    强制类型转换的结果:

    • 目标类型能够容纳目标值:结果不变
    • 目标类型不能容纳目标值:结果将产生截断

    注意: 并不是所有的类型都能进行强制转换
    例子:

    #include <stdio.h>
    
    struct TS
    {
        int i;
        int j;
    };
    struct  TS ts;
    
    int main(int argc, char const *argv[])
    {
        short s = 0x1122;
        char c = (char)s;  // 0x22
        int i = (int)s;   // 0x00001122
        int j = (int )3.1415;    // 3
        unsigned int p = (unsigned int )&ts;
        // long l = (long )ts; // error
        // ts = (struct TS)l; // error
    
        printf("s = %x
    ",s);
        printf("c = %x
    ",c);
        printf("i = %x
    ",i);
        printf("j = %x
    ",j);
        printf("p = %x
    ",p);
        printf("&ts = %p
    ",&ts);
        return 0;
    }
    

    结果:

    隐式类型转换
    编译器主动进行的类型转换

    • 当低类型到高类型,不会产生截断
    • 当高类型到低类型,会产生截断

    隐式类型转换的发生点

    • 算术运算中
    • 赋值表达式中
    • 函数调用中
    • 函数返回值
    #include <stdio.h>
    int main(int argc, char const *argv[])
    {
        char c = 'a';
        int i = c;
        unsigned int j = 0x11223344;
        short s = j;
    
        printf("c = %c
    ",c);
        printf("i = %d
    ",i);
        printf("j = %x
    ",j);
        printf("s = %x
    ",s);
        printf("sizeof(c+s) = %d
    ",sizeof(c+s));
    
        return 0;
    }
    

    结果:

    总结:

    • 强制类型转换由程序员负责
    • 隐式类型转换由编译器自动完成

    注: 标准的C语言编译器的类型检查是比较宽松的,因此
    隐式类型转换可能带来意外的错误。

  • 相关阅读:
    学习笔记-Python-Django-环境搭建、路由
    Python数据科学-技术详解与商业实践(文末附资源)
    09 Django 模型(数据库)
    pandas入门
    08 Django 模板进阶
    Django学习中常见问题
    07 Django 模板
    06 Django URL name详解
    05 Django 视图与网址进阶
    04 Django 视图与网址-urls.py
  • 原文地址:https://www.cnblogs.com/yanyun888/p/6061194.html
Copyright © 2011-2022 走看看