首页 > 编程语言 >C++自学笔记30(类型双关)

C++自学笔记30(类型双关)

时间:2024-07-28 16:25:31浏览次数:17  
标签:类型转换 mian ver cout int 30 C++ Entity 双关

上栗子

#include <iostream>

int mian()
{
    int a = 50;
    double ver = a;
    std::cout<<ver<<std::endl;

    std::cin.get();
}

a是一个占据4字节的数据,将a复制给ver并转换为double8个字节。这其中就是隐式的类型转换。

第一个是int类型的50,第二个是类型转换后的数据至于为什么是49 40就是类型转换做的了。

以上是代码自动进行了类型转换实际上是double ver = (double)a;

让我们继续看栗子。

#include <iostream>
stcut Entity
{
    float x,y;
};
int mian()
{
    Entity e = {5,8};
    int X = e.x;
    int Y = e.y;
    std::cout<<X<<","<<Y<<std::endl;
    std::cin.get();
}

创建结构体Entity并赋值xy为5/8,

打印为

5,8

#include <iostream>
stcut Entity
{
    float x,y;
};
int mian()
{
    Entity e = {5,8};
    int* array = (int*)&e
    std::cout<<array[0]<<","<<array[1]<<std::endl;
    std::cin.get();
}

打印为

5,8

结构体本身创建在栈上,就是说明在内存上是一条线的,那就是说明我们可以将结构体作为数组看待。对e取地址,那么就可以转换类型为int*作为指针使用,如此就将Entity的xy变为array的第一和第二个数。

类型转换不单单是复制数据,更是对内存改变。

标签:类型转换,mian,ver,cout,int,30,C++,Entity,双关
From: https://blog.csdn.net/weixin_64418869/article/details/140748670

相关文章

  • 【C++】实验五
    题目:1、五角数被定义为n(3n-1)/2,n=1,2,……,以此类推。因此最初的几个五角数为1,5,12,22,……,请使用下面的函数头编写函数,返回五角数:intgetPentagonaNumber(intn)编写程序,使用这个程序展示前20个五角数,每行打印5个。思路:首先需要编写一个返回五角数的函数,输出20个数需要在主函数......
  • C++中 cin、cin.get()、cin.getline()、getline() 的区别
    cin我们先介绍c++中最常用的输入流对象cin我们常用 cin>>num 来从缓冲区中读取数据到 num 中,num 的变量类型可以是多种类型,最常用的有 int、string、char、double、float等等voidcin_test(){std::cout<<"-----------cintest---------"<<std::endl;st......
  • 【C++软件调试技术】使用 Windbg 分析软件异常时的诸多细节与技巧总结
    目录1、dump文件1.1、dump文件的生成方式1.2、dump文件的大小2、pdb符号文件2.1、pdb文件的路径设置2.2、pdb文件的时间戳与名称问题2.3、如何确定要找哪些pdb文件?3、使用Windbg静态分析dump文件以及动态调试程序的一般步骤4、确定发生异常或崩溃的业务模块,到业务模块......
  • 30 列表常用方法——append()、insert()、extend()
    append()、insert()、extend()这3个方法都可以用于向列表对象中添加元素。①append()用于向列表尾部追加一个元素。②insert()用于向列表任意指定位置插入一个元素。③extend()用于将另一个列表中的所有元素追加至当前列表的尾部。这3个方法都属于原地操作,不......
  • 【C++进阶学习】第九弹——哈希的原理与实现——开放寻址法的讲解
    前言:在前面,我们已经学习了很多存储机构,包括线性存储、树性存储等,并学习了多种拓展结构,效率也越来越高,但是是否有一种存储结构可以在大部分问题中都一次找到目标值呢?哈希可能能实现目录一、哈希的概念二、哈希冲突三、哈希冲突解决3.1开放寻址法节点结构插入操作查......
  • Codeforces Round 962 (Div. 3) A - D详细题解(思路加代码Python,C++(垃圾灰名小白想
             吐槽一下,这次比赛不知道怎么的,可能是div3参加的人比较多吗,代码题解上去后全是inqueue,比赛的过程中我还看了提交的,80多页几千个提交全是inqueue,我的代码等了**半个多小时才运行,然后发现timelimit真的有点搞心态,思路在下一题我还要反过来去优化上一题,不过......
  • Visual Studio C++ 安装以及使用教程
    官网下载网址https://visualstudio.microsoft.com/zh-hans/VisualStudio:面向软件开发人员和Teams的IDE和代码编辑器(microsoft.com)下载好后双击运行跳出该界面,等待加载结束在组件选择界面,只需要选择这一项,勾选好后点击安装即可下载完后,点击图标打开C++点击创......
  • 【免费领源码】Java/Mysql数据库+SSM校园兼职网站 25557,计算机毕业设计项目推荐上万套
    摘 要当今人类社会已经进入信息全球化和全球信息化、网络化的高速发展阶段。丰富的网络信息已经成为人们工作、生活、学习中不可缺少的一部分。人们正在逐步适应和习惯于网上贸易、网上购物、网上支付、网上服务和网上娱乐等活动,人类的许多社会活动正在向网络化发展。兼职......
  • 【免费领源码】Java/Mysql数据库+springboot驾校预约管理系统 25540,计算机毕业设计项
    摘 要随着科学技术的飞速发展,各行各业都在努力与现代先进技术接轨,通过科技手段提高自身的优势;对于驾校预约管理系统当然也不能排除在外,随着网络技术的不断成熟,带动了驾校预约管理系统,它彻底改变了过去传统的管理方式,不仅使服务管理难度变低了,还提升了管理的灵活性。这种......
  • C++字体库开发之go语言绑定六
    export.h#defineFONTVIEW_API__declspec(dllimport)typedefvoid*GoFontSetPtr;#ifdef__cplusplusextern"C"{#endifFONTVIEW_APIGoFontSetPtropenFontSet(constchar*stream,size_tsize);FONTVIEW_APIvoidfreeFontSet(GoFontSetPtrfontset);......