gpt4 book ai didi

C++ : int*/float* to char*, 为什么使用 reinterpret_cast 得到不同的结果?

转载 作者:太空宇宙 更新时间:2023-11-04 14:40:58 31 4
gpt4 key购买 nike

  • int*char* :

    int* pNum = new int[1];
    pNum[0] = 57;
    char* pChar = reinterpret_cast< char* >(pNum);

    Result : pChar[0] = '9'; //'9' ASCII 57

  • float*char* :

    float* pFloat = new float[1];
    pFloat[0] = 57; //assign the same value as before
    char* pChar = reinterpret_cast< char* >(pFloat);

Result : pChar[0] = 'a';

那么为什么我会得到两个不同的结果?

感谢您的帮助。

最佳答案

你有这个是因为浮点值不使用与整数值相同的编码(IEEE 编码与尾数+指数或类似的东西)

此外,我假设您正在运行一个小端 CPU,否则您的第一个测试会产生 0(我的意思是 '\0')。

关于C++ : int*/float* to char*, 为什么使用 reinterpret_cast 得到不同的结果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40001271/

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