對於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)** 2,輸出a * a + a * b + b * a + b * b
- 3. 比賽[A](B)但不是![A](B)
- 4. Neon指令,vsub_f32(a,b),是a-b還是b-a?
- 5. Python a,b = b,a + b
- 6. 測試非整數是否在範圍[a,b) - 或[a,b],(a,b),(a,b)
- 7. 什麼是A&B代表.Aggregate((a,b)=>聲明w/a&b)
- 8. a,b = b,a + b和a = b,b = a + b在fibonacci中的區別是什麼[Python]
- 9. 如果不是(a而不是b),如果(不是a和b)
- 10. 從{a-b,b-c,c-a}改變爲{(a,b),(b,c),(c,a)}?
- 11. 混合兩個矢量:[a a]和[b b] to [a b a b]
- 12. Javascript不是(a == b)||不(c == b)
- 13. Matlab中的log(a * b)總是比log(a)+ log(b)更快?
- 14. A→B,B→A類協會
- 15. (A && B)與(A和B)
- 16. GROUP BY(A,B)和(B,A)
- 17. 邏輯:是(A &&!(B || C))|| (B || C)與(A || B || C)相同?
- 18. 通過「b =(a + b) - (a = b)」進行交換是否安全?
- 19. a + = b和a = + b之間的區別是什麼,a ++和++ a?
- 20. 殼牌:如果a小於b,「a -lt b」是不是真的?
- 21. 當B類從A類繼承時,它是否必須是「B類是 - A類」?
- 22. Python:是a,b = 1,2和a = 1; b = 2嚴格等價嗎?
- 23. 是{A-> B,B-> A}本身的最小封面嗎?
- 24. PHP變換陣列'a','b','c'到'a/b/c','a/b','a'
- 25. 爲什麼我不能使用| a,b |而不是|(a,b)|在arr.map {|(a,b)|中!b.nil? ? a + b:a}?
- 26. A == B對B == A,有什麼區別
- 27. 當B不是NaN時A和B之間的差異
- 28. a + b如何不等於b + a?
- 29. SqlAlchemy如何查詢列A == a和B == b和A == b和B == a
- 30. 簡化布爾表達式(a *'b *'c)+('a *'b * c)+('a * b *'c)+(a *'b * c)
什麼意思是「總有」,什麼類型是a和b –
事實上,如果類型是無符號類型,當「b」非零時相等總是成立。 –