2016-10-06 65 views
-4

我跑這個代碼在我的機器,它的輸出:11/5 = 2.1現在我可能是瘋了,但11/5 = 2.2C++的std :: DIV不會返回預期的結果

我讀入參考,並說div_t.rem爲x %y,在這種情況下等於1,但如果std::div不能返回11/5的預期結果,那麼std::div如何成爲該語言的一個特徵?

#include <iostream> 
#include <cstdlib> 

int main() { 

    std::div_t q; 
    q = std::div(11, 5); 

    std::cout << "11/5 = " << q.quot << '.' << q.rem << std::endl; 
} 
+7

'q.rem'是整數除法的餘數,而不是值的小數部分。 –

+0

這是'std :: div'的目的:不要做除法並給你一個浮點結果,而是返回''''''和'rem'ainder。否則,如果你有各種各樣的'operator /',爲什麼要做一個可以進行分割的函數呢? – ForceBru

回答

9

q.rem包含其餘部分。 11/5 = 2,其餘的爲1,這些結果沒有什麼奇怪的。

+0

哇,我知道我錯過了什麼......謝謝 –