Visualizzazione dei risultati da 1 a 6 su 6

Discussione: operatore ++ in java

  1. #1
    Utente di HTML.it
    Registrato dal
    Oct 2002
    Messaggi
    14

    operatore ++ in java

    Non riesco a spiegarmi il valore di g ottenuto con il seguente codice:
    public class Shift{
    1 static int i;
    2 static int j;
    3 public static void main(String argv[]){
    4 int i = 2;
    5 int j = 2;
    6 int g=2;
    7 int k;
    8 j++;
    9 k=i++;
    10 g=g++;
    System.out.println("j:"+j+" i:"+i+" g:"+g+" k:"+k);

    }
    }

    output
    j:3 i:3 g:2 k:2
    Infatti ripetendo le operaszioni fatte per j, i, k al rigo 10
    il valore di g (2) e' assegnato a se stesso poi incrementato e dovrebbe essere riassegnato a se stesso, ottenendo 3 (come fatto al rigo 9 per k e i: il valore di i=2 e' assegnato a k, poi e' incrementato e poi e' assegnato di nuovo ad i per ottenere 3)
    Grazie

  2. #2
    con [VAR]++ visualizzi e poi incrementi(utile nei for) con ++[VAR] incrementi e poi visualizzi
    La stupidità umana e l'universo sono infinite.
    Della seconda non sono certo(Einstein)

    Gnu/Linux User

  3. #3
    Utente di HTML.it
    Registrato dal
    Oct 2002
    Messaggi
    14
    So che ++ anteposto alla variabile fa si che l'incremento avvenga prima della visualizzazione (o comunque della sua utilizzazione) mentre postposto prima visualizza e poi incrementa, ma la mia perplessita' non e' questa. il comportamento strano (o comunque che io non riesco a capire) se prima della riga 10 'g' vale 2, perche dopo la 10 vale ancora 2?; lo stesso non si ha per 'i' (ad esempio): prima della riga 9 vale 2 dopo vale (giustamente) 3.
    Grazie.

  4. #4
    Utente di HTML.it
    Registrato dal
    Oct 2002
    Messaggi
    2,894
    E' strano cmq g=g++ non ha senso... Scrivi g++;


  5. #5
    Utente di HTML.it
    Registrato dal
    Mar 2002
    Messaggi
    315
    Non sono sicuro ma:

    penso che dipenda da dove viene memorizzato il valore della valutazione dell'espressione di destra.
    Nella riga 10 g viene prima valutato, e poi incrementato. Tuttavia finita la valutazione un valore e' gia' disponibile, per cui questi viene assegnato alla variabile di sinistra, che e' proprio g. Quindi il valore 3 viene sovrascritto con quello valutato a sinistra, cioe' 2.
    Ciao,
    Lorenzo

  6. #6
    Utente di HTML.it
    Registrato dal
    Oct 2002
    Messaggi
    2,894
    Era la stessa impressione che avevo avuto io... Cmq secondo me è più giusto scrivere solo g++;


Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.