;問題:C語言不允許使用位變量來訪問浮點數(shù)據(jù)類型的二進制位,請看一下代碼:
unionflm
{
floatmf;
longml;
};
bdatastructbady
{
charml;
unionflmex;
}try;
sbittryf31 = try.ex.ml ^ 31;
sbittrym10 = try.ml ^ 0;
sbittrym17 = try.ml ^ 7;
;處理方法:通過將浮點數(shù)和長整數(shù)構(gòu)造一個聯(lián)合(兩者均為32位),后用位變量來訪問聯(lián)合中長整型的位,由于float和long在union中占用了相同的存儲空間,也就訪問了浮點數(shù)的對應(yīng)位。