C語言的取余運算 a%b,如果a<b,那取余a,2%3=2,25%26=25,這是為什麼,規定?
01-01
想不通,是規定嗎?能否詳細講解下
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(整數)所以直接取余(被除數)即55/6=0…5先明白取余的定義再說吧:Modular arithmetic
誰說的a&不考慮下負數的感受?
這是小學數學…
這不是小學數學裡規定的嗎
這不是一個編程問題
這個%其實是數學中的取餘數,a小於b肯定餘數是a啊,a&>b時候a%b可以寫成a-a/b*b這樣,因為整型數自動捨棄小數點,結果肯定是一樣的
a%b=a-fix(a/b)*bfix指向零舍入到個位。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編程語言 |