kap*_*dit 2 c pointers char floating-point-conversion
我试图在Visual Studio中执行以下代码:
int main()
{
float f1 = 15.23;
char *ptr = &f1;
printf("%c", *(ptr));
getch();
return 0;
}
Run Code Online (Sandbox Code Playgroud)
编译错误:错误C2440:'初始化':无法从'float*__ w64'转换为'char*'
这有什么具体原因吗?为什么不允许这样做?
您确实可以将每个对象视为一个字符数组.但是,您必须显式地转换指针:
float f = 1.5f;
char const * p = (char const *)&f;
for (size_t i = 0; i != sizeof(float); ++i)
{
printf("The byte at position %zu has value %d.\n", i, (int)p[i]);
}
Run Code Online (Sandbox Code Playgroud)