2012-09-02 19 views

cevap

18

C++ 11 § 5.6 [expr.mul]/4 belirtir:

bölüm a/b sonucun türü temsil ise

, (a/b)*b + a%b a eşittir.

C11 §6.5.5/6 biraz farklı ifade ediliş ile aynı belirtir: bölüm a/b sunulabilen

, ifade (a/b)*b + a%ba eşit olacaktır; aksi halde, a/b ve a%b'un davranışı tanımsızdır. b` sıfırdan farklı olduğunda `sen demek istiyorsunuz ne

+2

"Bölümün gösterilebiliyorsa" maddesinin şart olduğunu unutmayın. Örneğin, 'a == INT_MIN' ve 'b == - 1 'ise, eşitlik yanlıştır (ve davranış tanımsızdır). –

+0

@R .. - bu ikilik tamamlayıcı gösterimi için geçerlidir, ancak büyüklük açısından değil. Tamamlayıcılar hakkında emin değilim. Üçü de C ve C++ için geçerli tamsayıdır. –

+0

Üzgünüm, genel olarak yanlış olduğunu kastediyorum çünkü ikilinin tamamlayıcısı bir olasılık. Aynı zamanda uygulamada yanlıştır, çünkü tamamlayıcılar ve işaret/büyüklük uygulamaları mevcut değildir. –

İlgili konular