對於int a, b
,我知道當a
和b
中只有一個是負數時,a/b
和a % b
的結果是機器相關的。但是當b
不爲零時,我總是有(a/b * b) + a % b == a
嗎?當b不是零時,我總是有`(a/b * b)+ a%b == a`嗎?
回答
C++ 11§5.6[expr.mul/4規定了:
如果商
a/b
是結果的類型表示的,(a/b)*b + a%b
等於a
。
C11§6.5.5/ 6指定具有稍微不同的措辭是相同的:
如果商
a/b
可表示,表達(a/b)*b + a%b
應等於a
;否則,a/b
和a%b
的行爲未定義。
請注意,「如果商是可表示的」子句是必不可少的。例如,如果'a == INT_MIN'和'b == - 1',等於false(並且行爲是未定義的)。 –
@R .. - 對於二進制補碼錶示而言,這是正確的,但對符號幅度不適用。不確定補碼。這三個都是C和C++的有效整數表示。 –
對不起,我的意思是一般都是錯誤的,因爲二進制補碼是一種可能性。這在實踐中也是錯誤的,因爲補充和簽署/量級實現不存在。 –
- 1. 對於非零'b',表達式「(a/b)* b + a%b - a」的表達式總是爲零嗎?
- 2. 比賽[A](B)但不是![A](B)
- 3. 測試非整數是否在範圍[a,b) - 或[a,b],(a,b),(a,b)
- 4. 什麼是A&B代表.Aggregate((a,b)=>聲明w/a&b)
- 5. a,b = b,a + b和a = b,b = a + b在fibonacci中的區別是什麼[Python]
- 6. 如果不是(a而不是b),如果(不是a和b)
- 7. 從{a-b,b-c,c-a}改變爲{(a,b),(b,c),(c,a)}?
- 8. Javascript不是(a == b)||不(c == b)
- 9. A→B,B→A類協會
- 10. GROUP BY(A,B)和(B,A)
- 11. (A && B)與(A和B)
- 12. 通過「b =(a + b) - (a = b)」進行交換是否安全?
- 13. 邏輯:是(A &&!(B || C))|| (B || C)與(A || B || C)相同?
- 14. a + = b和a = + b之間的區別是什麼,a ++和++ a?
- 15. 殼牌:如果a小於b,「a -lt b」是不是真的?
- 16. 當B類從A類繼承時,它是否必須是「B類是 - A類」?
- 17. Python:是a,b = 1,2和a = 1; b = 2嚴格等價嗎?
- 18. 是{A-> B,B-> A}本身的最小封面嗎?
- 19. PHP變換陣列'a','b','c'到'a/b/c','a/b','a'
- 20. A == B對B == A,有什麼區別
- 21. 當B不是NaN時A和B之間的差異
- 22. a + b如何不等於b + a?
- 23. SqlAlchemy如何查詢列A == a和B == b和A == b和B == a
- 24. 如果A和B是單子,如何將A [B [C]]轉換爲B [A [C]]?
- 25. 爲什麼a.compareTo(b)等於compareTo(a,b)或a.method(b)= method(a,b)?
- 26. 類型參數(F:((A,B))⇒B)(隱式CMP:訂貨[B]):(A,B)
- 27. jQuery,驗證A或B,但不是A和B
- 28. 爲什麼fold會預期(a - > b - > a)而不是(b - > a - > a)?
- 29. 函數f(a b)= b(a)有一個共同的名字嗎?
- 30. 用a * pow(b,N)替換a * b ** N
什麼意思是「總有」,什麼類型是a和b –
事實上,如果類型是無符號類型,當「b」非零時相等總是成立。 –