Hoppa till innehåll

Enkel Java: Operatorerna ++ Och --


Burftastic
 Dela

Rekommendera inlägg

Kan någon förklara för mig varför detta sker?

 

int i, k, m, n;
i = 4;
k = 7;

n = ++i * --k

n = 5 * 6 alltså n = i + 1 * 7 - 1

 

Använder jag dock postprefixer så blir det annorlunda

int i, k, m, n;
i = 4;
k = 7;

n = i++ * k--

n = 4 * 7

Ingen skillnad, hade lika gärnat kunna skriva n = i * k

 

Tacksam för hjälp.

 

EDIT: Plus en extra fråga, eftersom jag inte arbetat tillräckligt mef 'for':

 

Kommer denna biten av kod:

 

public static int antal(String s, char c) {
   int n = 0;
   for (int i = 0; i<s.length(); i++)
      if (s.charAt(i) == c)
         n+´+;
   return n;
}

Fungera lika bra som denna biten av kod?:

public static int antal(String s, char c) {
   int n = 0;
   int i = 0
   for (; i<s.length(); i++)
      if (s.charAt(i) == c)
         n+´+;
   return n;
}

Redigerat av f0rl0rnish
Länk till kommentar
Dela på andra sajter

++ eller -- operatorerna i prefixform betyder att:

  1. Operanden inkrementeras(++)/dekrementeras(--)
  2. Uttrycket evalueras till det slutgiltiga värdet
T.ex b = ++a; där a = 1

1. a sätts till 2.

2. b sätts till 2.

 

I postfixform:

  1. Uttrycket evalueras till det ursprungliga värdet
  2. Operanden inkrementeras/dekrementeras
T.ex b = a--; där a = 1

1. a sätts till 2.

2. b sätts till 1.

 

Därför blir n = 4 * 7 medan i och k ändras till 5 respektive 6, i din senare kod.

 

 

Ja, de fungerar precis lika bra i detta exempel. Men det finns en skillnad. I den senare koden deklarerar du variabeln i utanför for-slingan. Detta gör att variabeln i har räckvidd i hela den senare delen av din antal-metod, d.v.s. att du kan använda den efter att for-slingan har avslutats.

 

Däremot i den övre koden deklarerar du variabeln inuti for-slingan, vilket gör att den bara har räckvidd i for-slingan och slutar existera efter att for-slingan har avslutats.

Redigerat av Vitdom
Länk till kommentar
Dela på andra sajter

Gå med i konversationen

Du kan skriva nu och registrera dig senare. Om du har ett konto, logga in nu för att posta med ditt konto.

Gäst
Svara på det här ämnet...

×   Klistrade in som rich text.   Klistra in som vanlig text istället

  Endast 75 emojis är tillåtet.

×   Din länk har automatiskt inbäddats.   Visa som en länk istället

×   Ditt tidigare innehåll har återställts.   Rensa redigeraren

×   Du kan inte klistra in bilder direkt. Ladda upp eller infoga bilder från URL.

 Dela

×
  • Skapa ny...