嗨,大家今天過的好嗎?
網址: 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有被修正
過,但是網路上找找不到相關資訊,故上來請教一下板友~
感恩感恩