Ale*_*ves -1 c pointers casting
我知道指针是如何工作的,但是我在理解这个指针转换时遇到了一些麻烦。
float f;
scanf("%f", &f);
unsigned int x = *(unsigned int*)&f;
Run Code Online (Sandbox Code Playgroud)
有人可以解释我这是如何工作的吗?
unsigned int x = *(unsigned int*)&f;
Run Code Online (Sandbox Code Playgroud)
基本上意味着“获取 的地址f,假装它是 an 的地址unsigned int而不是 a float,然后取消引用结果。
它基本上是尝试将位从finto复制到x而不进行任何类型转换。
正如评论中提到的,这违反了称为“严格别名规则”的规则,并且这样做的行为是undefined。这可能会按预期工作。可能不会。
| 归档时间: |
|
| 查看次数: |
68 次 |
| 最近记录: |