当前位置: 首页 > news >正文

C++中的转换构造函数

在 C/C++ 中,不同的数据类型之间可以相互转换。无需用户指明如何转换的称为自动类型转换(隐式类型转换),需要用户显式地指明如何转换的称为强制类型转换。

自动类型转换示例:

    int a = 6;a = 7.5 + a;

编译器对 7.5 是作为 double 类型处理的,在求解表达式时,先将 a 转换为 double 类型,然后与 7.5 相加,得到和为 13.5。在向整型变量 a 赋值时,将 13.5 转换为整数 13,然后赋给 a。整个过程中,我们并没有告诉编译器如何去做,编译器使用内置的规则完成数据类型的转换。强制类型转换示例:

    int n = 100;int *p1 = &n;float *p2 = (float*)p1;

p1 是int *类型,它指向的内存里面保存的是整数,p2 是float *类型,将 p1 赋值给 p2 后,p2 也指向了这块内存,并把这块内存中的数据作为小数处理。我们知道,整数和小数的存储格式大相径庭,将整数作为小数处理非常荒诞,可能会引发莫名其妙的错误,所以编译器默认不允许将 p1 赋值给 p2。但是,使用强制类型转换后,编译器就认为我们知道这种风险的存

http://www.lryc.cn/news/170386.html

相关文章:

  • JSP ssm 特殊人群防走失系统myeclipse开发mysql数据库springMVC模式java编程计算机网页设计
  • 怎么实现一个登录时需要输入验证码的功能
  • 在android工程中新建Android模块报错
  • 电脑桌面的复选框如何取消
  • 【Unity每日一记】资源加载相关和检测相关
  • 【数据结构】长篇详解堆,堆的向上/向下调整算法,堆排序及TopK问题
  • DAQ高频量化平台:引领Ai高频量化交易模式变革
  • vue3 element plus获取el-cascader级联选择器选中的当前结点的label值 附vue2获取当前label
  • Spring Boot常见面试题
  • 分块矩阵求逆
  • Python 文件写入操作
  • 【Spring Boot系列】- Spring Boot侦听器Listener
  • JavaScript速成课—事件处理
  • 【入门篇】ClickHouse最优秀的开源列式存储数据库
  • 【C++ Exceptions】异常处理的成本
  • API接口:原理、实现及应用
  • SpringBoot学习笔记(项目创建,yaml,多环境开发,整合mybatis SMM)
  • Linux内核分析:输入输出,字符与块设备 31-35
  • Linux抓包工具tcpdump
  • Qt消息机制和事件
  • LeetCode-739-每日温度-单调栈
  • MyBatis中当实体类中的属性名和表中的字段名不一样,怎么办
  • Flutter框架和原理剖析
  • NFS:使用 Ansible 自动化配置 NFS 客户端服务端
  • IntelliJ IDEA使用——Debug操作
  • uniapp项目实践总结(十八)自定义多列瀑布流组件
  • Ubuntu 22.04LTS + 深度学习环境安装全流程
  • 【lesson7】git的介绍及使用
  • Keepalived+LVS高可用集群
  • AK 9.12 百度Java后端研发B卷 笔试