4_类型转换

关键词:类型之间的转换、强制类型转换、隐式类型转换

1. 类型之间的转换

  • C语言中的数据类型可以进行转换,转换方式有:
    强制类型转换
    隐式类型转换

2. 强制类型转换

强制类型转换的语法:
(Type) var_name;
(Type) value;
强制类型转换的结果:
目标类型能够容纳目标值:结果不变
目标类型不能容纳目标值:结果将产生截断
注意:不是所有的强制类型转换都能成功,当不能进行强制类型转换时,编译器将产生错误信息

3. 隐式类型转换

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

char c = 0;    // 变量c占用1个字节

short s = c;  // c 到 s 隐式类型转换
int i = s;    //   s 到 i 隐式类型转换
long l = i;   //  i到 l 隐式类型转换

注意:
低类型到高类型的隐式类型转换是安全的,不会产生截断
高类型到低类型的隐式类型转换是不安全的,会导致不正确的结果

  • 隐式类型转换的发生点
    1)算术运算式中,低类型转换为高类型
    2)赋值表达式中,表达式的值转换为左边变量的类型
    3)函数调用时,实参转换为形参的类型
    4)函数返回值,return表达式转换为返回值类型

4. 小结

  • 强制类型转换由程序员负责完成
    转换可能产生截断
    转换不区分类型的高低
    转换不成功时,编译器给出错误信息
  • 隐式类型转换由编译器自动完成
    低类型向高类型的转换是安全的
    高类型向低类型的转换是不安全的
  • 标准C编译器的类型检查是比较宽松的,因此隐式类型转换可能带来意外的错误

声明:此文章为本人在学习狄泰软件学院《C语言深度解析》所做的笔记,文章中包含狄泰软件资料内容一切版权归狄泰软件所有!

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 官方中文版原文链接 感谢社区中各位的大力支持,译者再次奉上一点点福利:阿里云产品券,享受所有官网优惠,并抽取幸运大...
    HetfieldJoe阅读 7,365评论 1 17
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 136,280评论 19 139
  • 值类型转换将值从一种类型转换为另一种类型通常称为类型转换,这是显示的情况;隐式的情况称为强制类型转换。JavaSc...
    xpwei阅读 9,016评论 0 5
  • Scala与Java的关系 Scala与Java的关系是非常紧密的!! 因为Scala是基于Java虚拟机,也就是...
    灯火gg阅读 8,859评论 1 24
  • 91 过去 属于心中的记忆 珍惜接下来的阳光 它照不回昨天 92 山峰再高 也触摸不到蓝天 梦想再远 也有实现的时...
    东者西迷阅读 1,225评论 0 1

友情链接更多精彩内容