Tom*_*ica 3 c++ double casting c-strings
我有一个代表double的字节数组:
char number[8];
Run Code Online (Sandbox Code Playgroud)
我需要将它转换为实际的double(也有8个字节).基于我尝试过的建议,但它失败了:
std::cout<<(*((*double)number))<<" is my number.\n";
Run Code Online (Sandbox Code Playgroud)
为什么会失败,我该怎么办?当然,我可以使用一些<<
魔法提取数据,但我不想这样做 - 它会消耗内存并使代码过于健壮.
为什么会失败?
你这里有一个错字.
std::cout<<(*((*double)number))<<" is my number.\n";
Run Code Online (Sandbox Code Playgroud)
它应该是:
std::cout<<(*((double*)number))<<" is my number.\n";
Run Code Online (Sandbox Code Playgroud)
我该怎么办?
您可以减少使用的括号数.
std::cout<< *(double*)number <<" is my number.\n";
Run Code Online (Sandbox Code Playgroud)
您应该使用C++强制转换而不是C强化转换,因此您可以清楚地了解自己在做什么.
std::cout<< *reinterpret_cast<double*>(number) <<" is my number.\n";
Run Code Online (Sandbox Code Playgroud)