2013-04-18 3 views
5

Kann ich sicher sein, dass eine ungerade Zahl in C++ immer den Boden des Ergebnisses zurückgibt, wenn es so geteilt ist, dass es einen Rest gibt oder gibt es Ausnahmen? Ich meine:Gibt eine ungerade Zahl immer ein Stockwerk zurück, wenn sie mit einem Rest geteilt wird?

int x = 5; 
x = x/2; 
cout<<x;  //2 
+1

ja.be sicher. aber warum? ans Standard sagt so in 5.6.4 –

+0

Ich sehe, vielen Dank :) – Straightfw

+2

Wenn der Zähler negativ ist, dann werden die Ergebnisse hinky. –

Antwort

2

Integer Division wird als eine Bodenoperation in C/C++ behandelt.

Sie erhalten 2 im obigen Beispiel, da die echte Antwort 2.5 nicht dargestellt werden kann.

Some more verbose answers here

+0

Toll, danke :) – Straightfw

+0

Nicht "typisch". Dies ist vorgeschrieben. –

+0

@Guvante: Huh? Das liegt vielleicht daran, dass dies keine C-Frage ist ....... –

5

ja. Sie können in c sicher sein, dass der ++

ISO/IEC N3485 (Arbeitsentwurf) sagt in 5.6.4

The binary/operator yields the quotient, and the binary % operator yields 
the remainder from the division of the first expression by the second. 
    If the second operand of/or % is zero the behavior is undefined. 
For integral operands the/operator yields the algebraic quotient with any 
fractional part discarded;81 if the quotient a/b is representable in the type 
of the result, (a/b)*b + a%b is equal to a; otherwise, the behavior of both 
a/b and a%b is undefined. 
+1

Wir haben uns von den Arbeitsentwürfen verabschiedet! C++ 11 existiert. –

+0

naja, es ist kostenlos, dieser Entwurf :-) –

+0

Das ist, weil es kein Sprachstandard ist. In diesem Fall sind Nummerierung und Text natürlich identisch. –

2

Ja; Trennung zwischen ganzen Zahlen ist immer ganzzahligen Division in C++:

[C++11 5.6/4]: Der binäre / Bediener den Quotienten und der binäre Operator % ergibt den Rest aus der Division des ersten Ausdrucks durch die zweite ergibt. Wenn der zweite Operand / oder % Null ist, ist das Verhalten nicht definiert. Für Integraloperanden liefert der Operator / den algebraischen Quotienten, wobei jeder gebrochene Teil verworfen wird; Wenn der Quotient a/b in der Art des Ergebnisses darstellbar ist, ist (a/b)*b + a%b gleich a.

Verwandte Themen