gpt4 book ai didi

c - 不明白 C 中的类型转换

转载 作者:行者123 更新时间:2023-11-30 19:42:02 25 4
gpt4 key购买 nike

我已经阅读了一些问题,但没有找到我想要的内容。这是一个类型转换的例子(我在一些视频中看到过)

    int s = 45;
double d = *(double *) &s;

(此示例旨在演示如果执行此类类型转换,数据将如何丢失。)但我不明白上面的例子和这个有什么区别。

    int s = 45;
double d = (double) &s;

或者这个

    int s = 45;
double d = (double) s;

最佳答案

在此示例中:

int s = 45;
double d = (double) &s;

您使用&运算符获取s的地址,然后将地址本身转换为double

第一种情况:

int s = 45;
double d = *(double *) &s;

您使用&运算符获取s的地址,然后引用该地址,就好像它指向双(double *) &s

现在你有一个指向 double 的指针,它位于 int 所在的同一地址。

使用*运算符,您可以获取此双指针中的值。

请注意,强制转换发生在取消引用之前!就好像它是:

int s = 45;
double d = *((double *) &s);

我们可以分成几行以便更容易理解:

int s = 45;
unsigned int addressOfS = &s;
double* pointerToTheSameNumAsPointerToDouble = (double*)addressOfS;
double theValueInThatPointer = *pointerToTheSameNumAsPointerToDouble;

关于c - 不明白 C 中的类型转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32936958/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com