嗨,大家今天过的好吗?
网址: https://reurl.cc/nZnAe
里面的一小段程式码:
float funky_float_abs (float a)
{
unsigned int temp = *(unsigned int *)&a;
temp &= 0x7fffffff;
return *(float *)&temp;
}
取浮点数的绝对值
网址里面说这样写会出问题,因为用char*与void*以外的型别(以这例子: unsigned int)
拿位址(&a)会让pointer指到别的address上。
但我用TDM-GCC 4.9.2与ideone(gcc6.3)编译并没有出现问题
结果: https://ideone.com/HJ6qX0
因为stackoverflow的这篇文章是10年前,我在想这部分是不是后来在C standard有被修正
过,但是网络上找找不到相关资讯,故上来请教一下板友~
感恩感恩