上栗子
#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