发布时间:2020-09-28 23:07 原文链接: C++之类型转换函数(一)

一、转换构造函数的学习:

1、回忆数据类型转换:

在平时写代码的时候,最怕的就是那种隐式数据类型转换了,一不小心,软件就bug不断;而显示数据类型(一般是程序自己去强制类型转换,这个是我们能够明显的识别和掌控的)。为此我们这里总结了一副隐式类型转换的图:

下面我们来几个隐式转换的例子:

代码版本一:

#include <iostream>
#include <string>
int main()

    short s ='a';
    unsigned int ui = 100;
    int i = -200;
    double d = i;
    std::cout<<"d =" << d <<std::endl;
    std::cout<<"ui= "<<ui<<std::endl;
    if((ui+i)>0)
    {
         std::cout<<"Postive"<<std::endl;
    }
    else
    {
       std::cout<<"Negative"<<std::endl;
    }
    return 0;

输出结果:

root@txp-virtual-machine:/home/txp# ./a.out
d =-200
ui= 100
Postive

注解:这里我们明显发现(-200+100)还是大于0,这显然不符合正常人的思维了;所以我们仔细分析一下,发现这里肯定是进行了隐式转换了,为此我们再加一条语句看看(ui+i)的值到底是多少:

代码版本二:

#include <iostream>
#include <string>
int main()

    short s ='a';
    unsigned int ui = 100;
    int i = -200;
    double d = i;
    std::cout<<"d =" << d <<std::endl;
    std::cout<<"ui= "<<ui<<std::endl;
    if((ui+i)>0)
    {
       std::cout<<"(ui+i) = "<<ui+i<<std::endl;
       std::cout<<"Postive"<<std::endl;
    }
    else
    {
       std::cout<<"Negative"<<std::endl;
    }
    return 0;


相关文章

研究者创新提出一种动力配分函数计算方法

近日,电子科技大学基础与前沿研究院教授汤迎课题组,联合中国科学院理论物理研究所研究员张潘、博士后刘晶,北京师范大学系统科学学院教授张江在《自然—通讯》上发表了研究论文。论文报道了利用变分自回归网络求解......

新研究:望远镜准直检测及点扩散函数

大视场像质优秀的光学望远镜是天文巡天观测的核心设备。然而,光学系统中的光学元件失调会造成各视场上的像差有规律的失对称性的退化,降低观测图像的质量,影响望远镜观测效率;利用机器学习技术实现基于星像测量的......

光腔中两原子共振荧光的相干性质

摘要:研究了置于光腔中的两个二能级原子,在强相干场驱动下的共振荧光光场的辐射场相干性质,发现在坏腔条件下,可以通过调节光腔与相干场的频率来提高一阶可见度和减小二阶关联函数.这是因为改变光腔与相干场的频......

分子动力学模拟蛋白质吸附过程中势能函数计算的分组简化

摘要分子水平上理解蛋白质吸附的机理,是目前蛋白质工程、生物材料和生物医学领域中一个基本问题。......

侧链能量在蛋白质对接优化中的应用

摘要一般的蛋白质对接程序能够提供大量的待选构象,但其中仅含有少量的正确构象。现在时接的主要工作在于如何从这些大量构象中挑出正确构象。我们先前的研究工作证明蛋白质界面比非界面表面具有更高的能量。......