亚洲春色中文字幕久久久-三上亚,一吻二脱三床四吻胸,国产真实伦对白视频全集,在线毛片观看,精品成品入口黄网,国产毛aⅴ片久久久,亚洲AV色香蕉一区二区三区老师,萧皇后A级艳片,色情日本视频更新,99久久亚洲精品日本无码

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 644|回復: 5
收起左側

下面的數據類型運算結果和表達式對嗎?

[復制鏈接]
ID:686513 發表于 2026-2-8 11:00 | 顯示全部樓層 |閱讀模式
float  A;  unsigned long B, C;   unsigned int D;
//方式1:
if(B > C)    D = (unsigned int)(fabs(A*(B - C)));        
else D = 0;
//方式2:if(B > C)    D = abs(A*(B - C));      
else D = 0;
我想得到的結果是無符號長整型數據 D(即:= 右邊的計算結果小數部分舍去,只保留整數)。這兩種方式運算有問題嗎?結果是一樣的嗎?


回復

使用道具 舉報

ID:1167348 發表于 2026-2-8 15:15 | 顯示全部樓層
      運算結果是一樣的。方式一是 對乘積求絕對值,結果是無符號整型。
  第二種是對乘積的浮點數求絕對值,然后強制類型轉換為無符號整型。



回復

使用道具 舉報

ID:844772 發表于 2026-2-10 08:55 | 顯示全部樓層
有些問題,方式一可能好一點點,要看數值大小,小的時候可能一樣。主要是D你定義的不是長型整數,所以如果方式一,如果數值大,強制類轉換時會喪失精度;方式二,在abs傳參時就會出問題,因為它接受的就是整數,你傳浮點數可能會溢出或喪失精度。在C中可用labs()替換,在51我沒用過。
回復

使用道具 舉報

ID:686513 發表于 2026-2-11 11:52 | 顯示全部樓層
wallywl 發表于 2026-2-8 15:15
運算結果是一樣的。方式一是 對乘積求絕對值,結果是無符號整型。
  第二種是對乘積的浮點數求絕對 ...

我想得到的結果是無符號長整型數據 D(即:= 右邊的計算結果小數部分舍去,只保留整數)。這樣的話方式二應該不會溢出了吧?
回復

使用道具 舉報

ID:686513 發表于 2026-2-11 11:53 | 顯示全部樓層
glinfei 發表于 2026-2-10 08:55
有些問題,方式一可能好一點點,要看數值大小,小的時候可能一樣。主要是D你定義的不是長型整數,所以如果 ...

我想得到的結果是無符號長整型數據 D(即:= 右邊的計算結果小數部分舍去,只保留整數)。這樣的話方式二應該不會溢出了吧?
回復

使用道具 舉報

ID:844772 發表于 2026-2-13 10:35 | 顯示全部樓層
zhth1979 發表于 2026-2-11 11:53
我想得到的結果是無符號長整型數據 D(即:= 右邊的計算結果小數部分舍去,只保留整數)。這樣的話方式二應 ...

abs()接受 int,你是long,要看啥系統和編譯器了,標準的會溢出。
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表