b'\n_START_ARTICLE_\nOperatore di assegnamento\n_START_SECTION_\nAssegnamento parallelo\n_START_PARAGRAPH_\nAlcuni linguaggi di programmazione, come il Python, Perl, Ruby, Windows PowerShell, e JavaScript (dalla 1.7), consentono a diverse variabili di essere assegnate in parallelo. In pseudocodice:_NEWLINE_a,b\xc2\xa0:= 0,1_NEWLINE_che assegna simultaneamente 0 a a e 1 a b. Se la parte destra di un assegnamento \xc3\xa8 un tipo di array di variabili, questa caratteristica \xc3\xa8 chiamata sequence unpacking:_NEWLINE_var list\xc2\xa0:= 0,1_NEWLINE_a,b\xc2\xa0:= list_NEWLINE_La lista \xc3\xa8 spacchettata in modo che 0 sia assegnato a a e 1 a b. Pi\xc3\xb9 interessante,_NEWLINE_a,b\xc2\xa0:= b,a_NEWLINE_Scambia i valori di a e b . In un linguaggio senza l\'assegnazione parallela, questo avrebbe dovuto essere implementato con l\'uso di una variabile temporanea:_NEWLINE_var t\xc2\xa0:= a_NEWLINE_a\xc2\xa0:= b_NEWLINE_b\xc2\xa0:= t_NEWLINE_poich\xc3\xa9 a:=b\xc2\xa0; b:=a lascia sia a che b con il valore originario di b.\n_START_SECTION_\nValore di un assegnamento\n_START_PARAGRAPH_\nNella maggior parte dei linguaggi di programmazione orientati alle espressioni, una istruzione di assegnamento \xc3\xa8 anche una espressione, il cui valore \xc3\xa8 il valore assegnato. Questo consente costrutti tipici, come per esempio in C x = y = a che assegna il valore di a sia a x che a y, e while (f = read()) {\xe2\x80\xa6}, che assegna il valore restituito da una funzione a una variabile, e nello stesso tempo lo usa per controllare un ciclo._NEWLINE_In altri linguaggi di programmazione, una istruzione di assegnamento non \xc3\xa8 una espressione, e quindi non ha un valore: in questi casi costrutti di questo genere non sono possibili. Un caso di questo tipo \xc3\xa8 rappresentato da Scheme. Anche in Python l\'assegnamento non \xc3\xa8 un\'espressione, e quindi non ha nessun "valore"._NEWLINE_In ML e in Haskell, non c\'\xc3\xa8 nessun operatore di assegnamento\n_START_SECTION_\nAssegnamento e assegnamento singolo\n_START_PARAGRAPH_\nIn programmazione funzionale l\'assegnamento \xc3\xa8 sconsigliato in favore del singolo assegnamento, anche chiamato name binding o inizializzazione. L\'assegnamento singolo \xc3\xa8 diverso dall\'assegnazione descritta in quanto pu\xc3\xb2 essere fatto solo una volta, tipicamente quando la variabile \xc3\xa8 creata; non sono consentite ulteriori assegnazioni. Una volta creato per assegnamento, il nome della variabile non \xc3\xa8 una variabile ma un oggetto immutabile._NEWLINE_Il singolo assegnamento \xc3\xa8 l\'unica forma di assegnamento disponibili nei linguaggi funzionali puri, come l\'Haskell, che non ha il concetto di variabili nel senso dei linguaggi imperativi. Linguaggi funzionali impuri consentono sia l\'assegnamento singolo che l\'assegnamento normale (anche se \xc3\xa8 usato meno che nella programmazione imperativa)._NEWLINE_Per esempio, in Scheme, si pu\xc3\xb2 usare sia il singolo assegnamento che l\'assegnamento vero per tutte le variabili. In OCaml, solo il singolo assegnamento \xc3\xa8 consentito con la sintassi let nome = valore; tuttavia, il vero assegnamento pu\xc3\xb2 essere usato sugli elementi degli array e delle strighe con l\'operatore <-._NEWLINE_.\n_START_SECTION_\nAssegnamento e uguaglianza\n_START_PARAGRAPH_\nI programmatori inesperti a volte confondono l\'operatore di assegnamento con l\'operatore relazionale di uguaglianza, poich\xc3\xa9 "=" in matematica significa uguaglianza, ed \xc3\xa8 usato come operatore di assegnazione in molti linguaggi. Tuttavia l\'assegnamento modifica il valore di una variabile, mentre l\'uguaglianza \xc3\xa8 un test che verifica se due espressioni hanno lo stesso valore._NEWLINE_In molti linguaggi l\'operatore di assegnamento \xc3\xa8 un singolo simbolo di uguale ("=") mentre l\'operatore di uguaglianza \xc3\xa8 una coppia di uguali ("=="); in alcuni linguaggi, come il BASIC, un unico simbolo \xc3\xa8 usato per entrambi, e sono discriminati in base al contesto._NEWLINE_Questo pu\xc3\xb2 portare errori se non viene usata la forma appropriata (=, ==, :=). Questo \xc3\xa8 un problema comune con i linguaggi come il C, nei quali l\'operatore di assegnamento ritorna il valore assegnato, e pu\xc3\xb2 essere annidato in modo valido dentro un\'espressione (come una funzione che ritorna un valore). Se per esempio l\'intenzione era di confrontare due valori in un\'istruzione if, l\'operatore di assegnamento ritorner\xc3\xa0 un valore che \xc3\xa8 molto probabile che venga valutato come TRUE, e sar\xc3\xa0 quindi valutata la clausola then, facendo comportare il programma in modo inatteso. Alcuni compilatori possono trovare queste situazioni, e avvisare il programmatore per un potenziale errore.'