標籤:

C語言的取余運算 a%b,如果a<b,那取余a,2%3=2,25%26=25,這是為什麼,規定?

想不通,是規定嗎?能否詳細講解下


2 ÷ 3 = 0 余 2,挺正常的嘛(

認真地說,C語言對取余的規定是保證 (a / b) * b + a % b == a,而對於除法的規定是結果向零取整(從C99開始)。所以當 a &< b 時,a / b == 0,自然會得到 a % b == a。

詳見:Arithmetic operators

需要注意的是C語言的和數學上取余是不完全一致的(對於負數的情況)。當然這裡沒有區別。


額,小學數學中規定,

被除數/除數=商……餘數

5/6不到1(整數)所以直接取余(被除數)

即5

5/6=0…5


先明白取余的定義再說吧:Modular arithmetic


誰說的a&不考慮下負數的感受?


這是小學數學…


這不是小學數學裡規定的嗎


這不是一個編程問題


這個%其實是數學中的取餘數,a小於b肯定餘數是a啊,a&>b時候a%b可以寫成a-a/b*b這樣,因為整型數自動捨棄小數點,結果肯定是一樣的


a%b=a-fix(a/b)*b

fix指向零舍入到個位。c/c++和java都是取余,但是python的%運算符是取模:

a%b=a-floor(a/b)*b

floor是向負無窮舍入到個位

所以,在c/c++中:

5%3=2 5%(-3)=2 (-5)%3=-2

在python中:

5%3=2 5%(-3)=-1 (-5)%3=1


你還有什麼辦法可以余出其他值嗎?


就相當於數學上的取余運算,mod。


因為2÷3餘2、25÷26餘25


是規定,數學求余,跟加減乘除一樣,都是規定,別糾結了,如果你非要糾結,那就從1+1=2開始論證吧,祝你功成名就


推薦閱讀:

開源代碼里某個函數很長,這種代碼能否認為是好的?
64 位系統中 long double 的最大值是多少?
有哪些適合學習的開源項目?
學c語言該怎麼入門?
如何查看大型工程的源代碼?

TAG:C編程語言 |