L'assegnazione istruzione è composta da tre parti:
- Il target o lvalue.
- Il compito operatore .
- Il valore da assegnare o rvalore.
Il valore rvalue può essere una costante o un'espressione che restituisce un valore del tipo corretto (o non necessariamente corretto, in alcune lingue). Il requisito è che il valore da assegnare a se stesso costituisca un valore valido sotto le regole della lingua specifica.
Come si fa notare, alcune lingue rendono un istruzione di assegnazione restituire il valore assegnato. C, C ++, C #, Java e un sacco di altri lo fanno in questo modo, alcuni con restrizioni. Questa è una pratica potenzialmente pericolosa, ma è un'incredibile notazione abbreviata nelle mani di coloro che sanno come usarla. Come sappiamo, ciò significa che le persone lo abuseranno deliberatamente o perché non comprendono i dettagli più fini della sintassi coinvolta. Il modo tecnico per esprimere questo è che la dichiarazione di assegnazione è un valore.
Quindi alcuni altri linguaggi rendono le istruzioni di assegnazione valide solo come dichiarazioni autonome e stabiliscono che l'operatore di assegnazione è valido solo all'interno di un'istruzione di assegnazione valida. In altre parole, in queste lingue una dichiarazione di assegnazione completa non è un valore valido.
Entrambi sono metodi validi per progettare una lingua, in base ai propri obiettivi. Ricorda sempre che C è stato progettato per essere in grado di fare praticamente tutto ciò che il linguaggio assembly può fare, solo in modo portatile e preferibilmente più leggibile, e molti linguaggi C-like derivano molte funzioni direttamente da C, anche se la sintassi è leggermente diversa . Ada d'altra parte è stata progettata per rendere estremamente difficile scrivere programmi che fanno qualsiasi cosa tranne esattamente ciò che è previsto.
Ne consegue dal ragionamento precedente che =
in C, C ++, C #, Java, ...; :=
in Pascal, Ada, ...; e così via, può essere correttamente chiamato l'incarico operator , che forma una parte di una completa dichiarazione di assegnazione. Se una dichiarazione di assegnazione completa si forma un valore valido è un argomento diverso e in realtà non ha nulla a che fare con lo stato della sequenza di caratteri in quanto tale che viene utilizzato per indicare l'assegnazione a un lvalue.