簡體   English   中英

C++:奇怪的除法輸出

[英]C++: strange division output

我有以下代碼:

    int x = arr[arr.size() -1] - arr[0];
    int n = arr.size();
    int dx = x/n;
    int dy = (arr[arr.size() -1] - arr[0])/arr.size();
    std::cout << dx << "  " << dy << std::endl;

當我的arr = [15, 13, 12] ,我得到dx = -1 ,但dy = 1431655764arr is vector<int>

為什么dxdy不同? 謝謝!

為什么dxdy不同?

對於dy ,請注意std::vector::size的返回類型是std::vector::size_type ,它是一個無符號整數類型。 然后(arr[arr.size() -1] - arr[0])/arr.size()也是無符號的。 結果溢出,然后分配給int類型的dy

無符號整數算術總是以2 n執行,其中 n 是該特定整數中的位數。 例如,用於unsigned int ,加入一種至UINT_MAX給出​0 ,並從一個減去​0​給出UINT_MAX

對於dxarr.size()首先分配給n (其類型為int ),然后計算為x/n ,其結果也是int 然后將結果分配給dx一切正常。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM