输入类型,c语言问题

Nar*_*aki 4 c casting

我无法理解一些类型转换语法.例如.

float f=7.0;
short s=*(short *)&f;
Run Code Online (Sandbox Code Playgroud)

这里发生了short s=*(short *)&f什么?看起来我们正在将其something作为指向short的指针,然后初始化s为存储在指向的地址中的值something.

现在,这something看起来像变量的地址f.因此,如果something= address of f,在我看来,我们正在制作address of f一些指向一些简短的指针然后取消引用它.我知道我说的是错的,但我似乎无法想象它.

谢谢.

Pas*_*uoq 5

如果short大小相同,这种语法最有意义float,即便如此," 严格的别名规则 " 仍然存在问题.

它用于将floatf 的位解释为表示整数.它用于规避s = (short) f;将被解释为转换为整数的事实.我相信截断.