2017-07-14 1 views
1
var a=1; 
b=++a*a; 
console.log(b); 
console.log(a); 

das Ergebnis ist 4,2.wie das Programm dieses Ergebnis bekommen? in meinem Kopf wird das Ergebnis 2,2Wie wird die JavaScript-Präfix-Operation so aussehen?

kann mir jemand sagen, wie der Javascript-Compiler dieses Stück Code kompilieren und das Ergebnis 4,2 erhalten.

Dann ist die tiefe Frage, warum diese beiden Teile des Codes das gleiche Ergebnis sind.

var a=2; 
var b=3; 
c=(a++)*a; 
console.log(c); 


var a=2; 
var b=3; 
c=(a++)*b; 
console.log(c); 

Kann mir jemand das Schritt für Schritt erklären?

+0

warum dies erhalten Fehler in C-Programmierung language.Like diese int a = 1; b = ++ a * a; console.log (b); console.log (a); Was ist der Unterschied zwischen C und Javascript, warum c Fehler bekommen. – JackieWillen

+0

Der Unterschied zwischen Javascript und C (abgesehen von den offensichtlichen syntaktischen Unterschieden) ist, dass Javascript immer von rechts nach links und C nicht bewertet; C kann die Argumente für "*" in beliebiger Reihenfolge oder sogar parallel auswerten. Aus diesem Grund dürfen Sie keine Variable im selben Ausdruck ändern und verwenden. Siehe https://StackOverflow.com/questions/949433/why-are-these-constructs-using-undefined-behavior – rici

Antwort

1

++ hat eine höhere Priorität als *. Somit wird b = ++ a * a als b = (++a) * a ausgewertet.

++a macht a gleich 2 und dann a wird von selbst multipliziert.

Auf einer Nebenbemerkung, jedes Mal, wenn Sie durch so etwas verwirrt werden, finden Sie JavaScript Operator Rangfolge-Tabelle und versuchen Sie, die Gleichung selbst zu brechen.

+0

, warum dies Fehler in c Programmiersprache erhalten wird. Wie dies int a = 1; b = ++ a * a; console.log (b); Konsole.log (a); – JackieWillen

+1

Ich bin kein C-Experte, aber wahrscheinlich, weil 'b' nicht deklariert ist. Versuchen Sie 'int b = ++ a * a; ' – Kapol

+0

Ich füge int vor b hinzu, aber immer noch Fehler wie: Zeile 2: Fehler: Initialisierungselement ist nicht konstant Zeile 3: Fehler: erwartet' = ',', ' , ';', 'asm' oder '__attribute__' vor '.' Token Zeile 4: Fehler: erwartet '=', ',', ';', 'asm' oder '__attribute__' vor '.' Token – JackieWillen

0

++ a erhöht den Wert vor der Multiplikation auf 2. Danach zeigt die Variable "a" auf den Wert 2 und es wird die Multiplikation gemacht: 2 * 2.

a ++ * a wil geben Sie das gewünschte Ergebnis (2,2)

+0

, warum dies Fehler in c Programmiersprache erhalten wird. Wie dies int a = 1; b = ++ a * a; console.log (b); console.log (a); Was ist der Unterschied zwischen C und Javascript, warum c Fehler bekommen. – JackieWillen

Verwandte Themen