English

x++, ++x, x+=1 eller x=x+1?

x++, ++x, x+=1 och x=x+1, alla är olika sätt att öka värdet på variabeln x med ett. Det kan verka märkligt att det finns så många sätt att öka en variabels värde. Behövs verkligen alla och är det egentligen någon skillnad på dem?

Svaret är helt klart ja. Det finns en tydlig skillnad mellan operatorerna och dess tänkta användningsområden och det finns en motivering till att de alla behövs.

En "normal" addition har formen a+b. När man beräknar ett uttryck vill man normalt använda resultatet på något sätt också. Till exempel så sparar man det i en variabel: x=a+5. Denna sats kommer först att hämta värdet ur a, till detta adderas 5 och sedan sparas resultatet i x. I många imperativa programmeringsspråk kan man även spara resultatet i variabler som ingår i beräkningen. x=x+1 är alltså bara ett specialfall av den klassiska additionen.

Det där med att ändra på en variabels värde är något man gör väldigt ofta när man programmerar. Det ligger i de imperativa programmeringsspråkens natur att göra sådant. Detta har gjort att man lagt till en operator, +=, för att underlätta just sådan kod. Istället för att skriva x=x+a kan man skriva x+=a. När man vet vad det betyder så blir koden mer överskådlig om man använder += istället för att skriva det längre alternativet. Det är fritt att välja mellan x+=a och x=x+a då de är identiska i alla avseenden. Utöver += finns även övriga räknesätt representerade med: -=, *=, /=, &= och |=.

Inte nog med att det är mycket vanligt att man beräknar ett nytt värde på en redan existerande variabel, det nya värdet är nästan alltid exakt ett större eller ett mindre än det gamla värdet. Det vill säga, den vanligaste beräkningen är x=x+1. Så är det eftersom denna beräkning förekommer i många loopar och på andra ställen där man stegar igenom något data ett steg i taget. Eftersom detta är en såpass vanlig beräkning vill man göra koden lite tydligare och skilja mellan den vanliga additionen med ett och det faktum att man ökar ett index eller en räknare ett steg. Detta gör man genom att använda ++.

++ skrivs antingen före eller efter den variabel man vill öka värdet på. Valet om det ska stå före eller efter är inte alltid uppenbart. Om satsen x++ står för sig självt har det ingen betydelse om ++ står före eller efter x. Däremot om satsen är en del av något större uttryck är det viktigt att tänka på i vilken ordning man vill att saker ska ske. Skriver man ++ före x så kommer värdet på x att ökas innan x används i det kringliggande uttrycket. Om ++ skrivs efter x sker uppräkningen efter användningen.


Fatal error: Uncaught Error: Undefined constant "ftindex" in /data/4/5/459398fa-66da-434b-8912-b747ace50b73/fantasi.se/public_html/header.php:143 Stack trace: #0 /data/4/5/459398fa-66da-434b-8912-b747ace50b73/fantasi.se/public_html/article.php(310): ftline(Array, Array) #1 [internal function]: articleStart(Object(XMLParser), 'ROW', Array) #2 /data/4/5/459398fa-66da-434b-8912-b747ace50b73/fantasi.se/public_html/article.php(509): xml_parse(Object(XMLParser), '<?xml version="...') #3 {main} thrown in /data/4/5/459398fa-66da-434b-8912-b747ace50b73/fantasi.se/public_html/header.php on line 143