Operatorrangfolge in C #

7

Ist

%Vor%

entspricht

%Vor%

... und wird es Gleitkomma- oder Integer-Division verwenden?

Edit ... Wenn die Antwort zu obigem ja ist, was ist der Vorteil einer Gleitkomma Division hier?

    
Ben 19.07.2010, 09:59
quelle

8 Antworten

12

/ und * haben die gleiche Operatorpriorität wie in §7.2.1, also sollten die beiden Ergebnisse identisch sein (mit float rules).

Ich kann mich jedoch nicht darum kümmern, Ranglisten zu lernen; Ich benutze nur Klammern. Dann funktioniert es in jeder Sprache, ohne sich daran erinnern zu müssen.

Eine weitere wichtige Frage ist die Rundung in der finalen (int) -Cast: Erwarten Sie, dass das "up", "down" oder "bankers" ist?

    
Marc Gravell 19.07.2010, 10:04
quelle
3

Vorrangregeln sind wirklich nervig, um mich daran zu erinnern, also bevorzuge ich auch Klammern, um zu disambiguieren. Ich versuche, dem Ratschlag zu folgen, Code für Leute zuerst zu schreiben, Computer zweitens. Aber es gibt eine interessante Mnemonic (die ich aus Bruce Eckels Büchern gelernt habe), um sich an einige Regeln zu erinnern: " Ulkus-Süchtige mögen C sehr viel ":

%Vor%

Es ist nicht perfekt, bitweise Operatoren sind eingequetscht und wir müssen wissen, dass Multiplikationsoperatoren (*, /,%) Vorrang vor zusätzlichen (+, -) haben.

    
Jordão 19.07.2010 15:27
quelle
2

Sie sind äquivalent und verwenden Gleitkomma-Division. Selbst wenn die Multiplikation zuerst stattfinden würde, würde die Gleitkommadivision verwendet werden, da das int durch das Ergebnis von float * int dividiert wird, das float ist.

Bearbeiten:

Wenn die obige Antwort ja lautet, was ist der Vorteil einer Gleitkomma-Division?

Ist das ein Vorteil? Das erste, was Sie in Betracht ziehen sollten, ist, ob es korrekt ist oder nicht, da das Ergebnis anders sein wird. Nach dem Code zu urteilen, versuchen Sie, einen Prozentsatz zu berechnen. Wenn "int1" immer kleiner als var2.Count () ist, wird das Ergebnis immer 0 sein, was nicht das ist, was Sie wollen.

    
Anton Hansson 19.07.2010 10:03
quelle
1

Ich würde sagen: Ja, Division und Multiplikation sollten von links nach rechts gehen. Und so ist es eine Float Division.

PS: Ersetzen Sie float durch double , wo immer Sie können.

    
Henk Holterman 19.07.2010 10:04
quelle
1

Siehe die C # -Sprachspezifikation: Operatorrangfolge und Assoziativität .

    
dan-gph 31.10.2011 04:58
quelle
0

Es ist dasselbe. Beide werden Float Division verwenden.

    
Johann Strydom 19.07.2010 10:04
quelle
0

Ja, beide sind gleichwertig.

Beide verwenden Gleitkommadivision.

    
Upul Bandara 19.07.2010 10:05
quelle
0

Integer-Division gibt nur den ganzen Teil der Antwort zurück, d. h. 3/2 wird 1 sein, während Float-Division Ihnen 1,5

geben wird     
Johann Strydom 19.07.2010 10:05
quelle

Tags und Links