Burftastic Skrivet 11 April 2011 Rapport Dela Skrivet 11 April 2011 (redigerat) 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 11 April 2011 av f0rl0rnish Citera Länk till kommentar Dela på andra sajter More sharing options...
Vitdom Skrivet 12 April 2011 Rapport Dela Skrivet 12 April 2011 (redigerat) ++ eller -- operatorerna i prefixform betyder att:Operanden inkrementeras(++)/dekrementeras(--)Uttrycket evalueras till det slutgiltiga värdetT.ex b = ++a; där a = 1 1. a sätts till 2. 2. b sätts till 2. I postfixform:Uttrycket evalueras till det ursprungliga värdetOperanden inkrementeras/dekrementerasT.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 12 April 2011 av Vitdom Citera Länk till kommentar Dela på andra sajter More sharing options...
Rekommendera inlägg
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.