/
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?
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.
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.
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.
Siehe die C # -Sprachspezifikation: Operatorrangfolge und Assoziativität .
Ja, beide sind gleichwertig.
Beide verwenden Gleitkommadivision.
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 wirdTags und Links c# operator-precedence