C语言类型转换

int a;
a=1.23

这里把1.23赋值给a发生了隐式转换,原理如下:

int a;
float b=3.14;
a=b;

b赋值给a的过程:首先找一个中间变量是a的类型(该例中,只能把b取整得到),然后再用中间过渡变量给a赋值。

在c++中类的构造函数发生的类型转换也是相同的原理

整型的100要转换成对象型的t,必须要能找到一个中间对象,对该例来讲,构造函数Test(int d=0)刚好可以通过一个整型变量d来构造出一个对象,所以可以得到中间对象,转换就可以进行。

参考下列代码:

#include <iostream>
using namespace std; class Test
{ public:
Test(int d=0)
{
data=d;
cout<<"创建对象t"<<this<<endl;
}
~Test()
{
cout<<"注销对象t"<<this<<endl;
}
private:
int data;
}; int main()
{
Test t;
t=100; //可以将整型100赋值给对象t
return 0;
}

可以以将整型常量100赋值给对象t,原理是通过在栈区申请临时无名对象,再把100传递进该空间,由该临时无名对象通过相应的赋值函数赋值给对象t。

C语言类型转换原理的更多相关文章

  1. Atitit.提升语言可读性原理与实践

    Atitit.提升语言可读性原理与实践 表1-1  语言评价标准和影响它们的语言特性1 1.3.1.2  正交性2 1.3.2.2  对抽象的支持3 1.3.2.3  表达性3 .6  语言设计中的权 ...

  2. Go 语言类型转换

    类型转换用于将一种数据类型的变量转换为另外一种类型的变量.Go 语言类型转换基本格式如下: type_name(expression) type_name 为类型,expression 为表达式. 实 ...

  3. Go语言类型转换

    类型转换用于将一种数据类型的变量转换为另外一种类型的变量. Go语言类型转换基本格式如下:表达式 T(v) 将值 v 转换为类型 T . Go语言各种类型转换及函数的高级用法:strconv包实现了基 ...

  4. 【转载】C/C++杂记:运行时类型识别(RTTI)与动态类型转换原理

    原文:C/C++杂记:运行时类型识别(RTTI)与动态类型转换原理 运行时类型识别(RTTI)的引入有三个作用: 配合typeid操作符的实现: 实现异常处理中catch的匹配过程: 实现动态类型转换 ...

  5. GO语言学习(十七)Go 语言类型转换

    Go 语言类型转换 类型转换用于将一种数据类型的变量转换为另外一种类型的变量.Go 语言类型转换基本格式如下: type_name(expression) type_name 为类型,expressi ...

  6. Delphi VS C语言类型转换对照

    Delphi VS C语言类型转换对照   When converting C function prototypes to Pascal equivalent declarations, it's ...

  7. c语言类型转换注意事项

    转载自: http://blog.csdn.net/zhuimengzh/article/details/6728492 1.隐式转换     C在以下四种情况下会进行隐式转换:        1.算 ...

  8. C语言---类型转换

    itoa 功 能:把一整数转换为字符串 用 法:char *itoa(int value, char *string, int radix); 详细解释:itoa是英文integer to array ...

  9. C#语言基础原理及优缺点

    一.原理: C#是专门为.net程序框架而创造的语言. .net框架有ms的.netFramework:Mono的.NetFramework(也是符合.net IL语言,CTS规范,CLS规范, CL ...

随机推荐

  1. 商城秒杀系统总结(Java)

    本文写的较为零散,对没有基础的同学不太友好. 一.秒杀系统项目总结(基础版) classpath 在.properties中时常需要读取资源,定位文件地址时经常用到classpath 类路径指的是sr ...

  2. 在win10操作系统中pycharm启动时无法打开的解决方法

    ''' 当打开pycharm时报错 Error launching Pycharm Failed to load JVM DLL C:\Program Files\Jetbrains\Pycharm ...

  3. vue监听有无网络

    mounted () {     window.addEventListener('offline', function ($event) { alert('offline'); });     wi ...

  4. docker学习(四) - docker构建redis主从结构

    此文章假设你已经安装了docker,如果没有安装请查询本博客docker安装章节 容器网络 docker network ls  查看默认的网络 Docker安装后,默认会创建下面三种网络类型 在启动 ...

  5. 配置DHCP Relay的功能原理是什么?

    DHCP中继代理,就是在DHCP服务器和客户端之间转发DHCP数据包.当DHCP客户端与服务器不在同一个子网上,就必须有DHCP中继代理来转发DHCP请求和应答消息.DHCP中继代理的数据转发,与通常 ...

  6. Java:基于AOP的动态数据源切换(附源码)

    1 动态数据源的必要性 我们知道,物理服务机的CPU.内存.存储空间.连接数等资源都是有限的,某个时段大量连接同时执行操作,会导致数据库在处理上遇到性能瓶颈.而在复杂的互联网业务场景下,系统流量日益膨 ...

  7. NETPLIER : 一款基于概率的网络协议逆向工具(一)理论

    本文系原创,转载请说明出处:信安科研人 关注微信公众号 信安科研人 获取更多网络安全学术技术资讯 今日介绍一篇发表在2021 NDSS会议上的一项有关协议逆向的工作: @ 目录 1 网络协议逆向工程简 ...

  8. 空间插值生物X适宜性分析

    1 前言 这期博主将根据示例大概讲一下插值分析. 2 问题阐述 根据要求,完成以下操作: (1)请就以上条件确定此地区适合X的生活范围,并制作专题图.专题图内容要求以地形和水系作为背景,且给出适宜区域 ...

  9. 构建 Go 应用 docker 镜像的十八种姿势

    修炼背景 我夜以继日,加班加点开发了一个最简单的 Go Hello world 应用,虽然只是跑了打印一下就退出了,但是老板也要求我上线这个我能写出的唯一应用. 项目结构如下: . ├── go.mo ...

  10. 高级IO模型之kqueue和epoll

    目录 简介 block IO和nonblocking IO IO多路复用和select poll epoll kqueue epoll和kqueue的优势 简介 任何一个程序都离不开IO,有些是很明显 ...