Jaký je rozdíl mezi ++ a ++ v programovacím jazyce?


Odpověď 1:

V programovacím jazyce se tyto dva nazývají příkazy pre (++ a) a post (a ++).

Dovolte mi uvést příklad,

a = 0, b = 0;

pro (i = 0; i <= 5; i ++) {// smyčka po dobu 5x

printf ("% d", ++ a); // toto vytiskne „1 2 3 4 5“

printf ("% d", b ++); // a bude to „0 1 2 3 4“

}

V ++ a, bude hodnota nejprve zvýšena a poté přiřazena

++ a -> přírůstek -> přiřadit

Zatímco v b ++ bude hodnota b nejprve přiřazena a poté je zvýšena

a ++ -> přiřadit -> přírůstek


Odpověď 2:

V minulosti nebyly kompilátory tak chytré a použití ++ a - mohlo pomoci kompilátoru vygenerovat lepší strojový kód.

++ zvyšuje a dává hodnotu a ++ dává hodnotu a pak zvyšuje. Samy o sobě není žádný rozdíl, ale jsou ve výrazu, že se liší.

Automatické zvyšování a snižování je v mnoha sadách instrukcí CPU velmi běžné, protože je velmi efektivní a snadno implementovatelné.

Zásobník je běžná datová struktura, ale existují dvě možnosti:

int stack [100]; // moje hromada čísel bude uložena zde * top = & stack [0]; // top-of-stack je upravován pokaždé, když je použit

// Metoda 1: top je místo, kde bude něco nového PUSHED * top ++ = něco; // PUSH něco potom přírůstek něco = * —top; // dekrementace a POP nejvyšší hodnota

// Metoda 2: top je místo, kde bude něco starého POPPED * ++ top = něco; // přírůstek a PUSH něco = * nahoru—; // POP pak dekrement

Někteří kompilátoři CPU mohou některé z nich převést na efektivní jednotlivé pokyny.

Dalším příkladem je:

pokud (—a> 0) goto štítek;

lze převést na jednu instrukci CPU, jako je

djnz reg1, adresa; decrement registr, skok, pokud ne nula, na adresu

Ale CPU nemusí mít vestavěnou instrukci pro:

pokud (a—> 0) goto štítek;

který by mohl být převeden na něco podobného

move reg1, reg2decrement reg1test reg2jnz address

Moderní kompilátoři často „přepíšou“ váš kód, aby využili speciálních instrukcí CPU, takže pokud neprogramujete na malém mikrokontroléru s omezeným omezením, obvykle se nemusíte bát.


Odpověď 3:

V minulosti nebyly kompilátory tak chytré a použití ++ a - mohlo pomoci kompilátoru vygenerovat lepší strojový kód.

++ zvyšuje a dává hodnotu a ++ dává hodnotu a pak zvyšuje. Samy o sobě není žádný rozdíl, ale jsou ve výrazu, že se liší.

Automatické zvyšování a snižování je v mnoha sadách instrukcí CPU velmi běžné, protože je velmi efektivní a snadno implementovatelné.

Zásobník je běžná datová struktura, ale existují dvě možnosti:

int stack [100]; // moje hromada čísel bude uložena zde * top = & stack [0]; // top-of-stack je upravován pokaždé, když je použit

// Metoda 1: top je místo, kde bude něco nového PUSHED * top ++ = něco; // PUSH něco potom přírůstek něco = * —top; // dekrementace a POP nejvyšší hodnota

// Metoda 2: top je místo, kde bude něco starého POPPED * ++ top = něco; // přírůstek a PUSH něco = * nahoru—; // POP pak dekrement

Někteří kompilátoři CPU mohou některé z nich převést na efektivní jednotlivé pokyny.

Dalším příkladem je:

pokud (—a> 0) goto štítek;

lze převést na jednu instrukci CPU, jako je

djnz reg1, adresa; decrement registr, skok, pokud ne nula, na adresu

Ale CPU nemusí mít vestavěnou instrukci pro:

pokud (a—> 0) goto štítek;

který by mohl být převeden na něco podobného

move reg1, reg2decrement reg1test reg2jnz address

Moderní kompilátoři často „přepíšou“ váš kód, aby využili speciálních instrukcí CPU, takže pokud neprogramujete na malém mikrokontroléru s omezeným omezením, obvykle se nemusíte bát.