Domanda

Io tendo ad usare le parole per definire, dichiarare e di assegnare in modo intercambiabile, ma questo sembra risultare offensivo per alcune persone.Questo è giustificato?Devo solo utilizzare la parola dichiarare per la prima volta mi assegnare ad una variabile?O c'è dell'altro?

È stato utile?

Soluzione

Definire e dichiarare sono simili, ma l'assegnazione è molto diverso.

Qui mi sto dichiarando (o definizione) di una variabile:

int x;

Eccomi di assegnare un valore alla variabile:

x = 0;

Qui sto facendo sia in una dichiarazione:

int x = 0;

Nota

Non tutte le lingue il supporto di dichiarazione e assegnazione in una dichiarazione:

T-SQL

declare x int;
set x = 0;

Alcune lingue richiedono l'assegnazione di un valore ad una variabile al momento della dichiarazione.Questo requisito consente al compilatore o un interprete di lingua per dedurre un tipo di variabile:

Python

x = 0

Altri suggerimenti

Una definizione è dove è descritto un valore o funzione, cioè il compilatore o programmatore viene detto esattamente quello che è, per esempio.

int foo()
{
  return 1;
}

int var; // or, e.g. int var = 5; but this is clearer.

Una dichiarazione indica al compilatore, o il programmatore che esiste la funzione o variabile. per es.

int foo();
extern int var;

La cessione è quando una variabile ha il valore impostato, di solito con l'operatore =. per es.

a = b;
a = foo();

E 'importante usare la terminologia corretta, altrimenti la gente non sa che cosa si sta parlando, o non correttamente per scontato che non si sa cosa si sta parlando.

Questi termini hanno spesso significati precisi nelle norme per le varie lingue. Quando questo è il caso non dovrebbero essere fusero.

In C, per esempio:

  • una funzione può essere definito solo una volta (quando si dice quello che fa), ma può anche essere ha dichiarato prima che (quando si dice quali argomenti ci vuole e che tipo restituisce).

  • Allo stesso modo una variabile è ha dichiarato quando si dice che tipo è, e questo accade solo una volta per ogni ambito. Ma si può Assegna un valore più volte. (Alcune lingue distinguere tra loro anche di inizializzazione (dando una variabile un valore al momento della dichiarazione) e assegnazione (cambiando il valore più tardi).)

Le differenze possono sembrare sottile, ma sono importanti. Non tutte le lingue rende le stesse distinzioni, ma in C ++ un dichiarazione di variabile rende il tipo e il nome della variabile noto al compilatore

int i;

definizione variabile alloca memoria e specifica un valore iniziale per la variabile.

i = 1;

È possibile combinare una dichiarazione di variabile e la definizione in una dichiarazione, come viene comunemente fatto.

int x = 1;

Dichiarazione di una variabile all'interno di una funzione annullerebbe anche memoria per la variabile, quindi il seguente codice definisce implicitamente variabile a come parte della sua dichiarazione.

int main()
{
    int a;
    return 0;
}

Poiché <=> variabile viene automaticamente definita dal compilatore, esso contiene qualsiasi valore era nella posizione di memoria allocata per esso. Questo è il motivo per cui non è sicuro da usare variabili automatiche fino a quando hai assegnato in modo esplicito un valore noto per loro.

Un incarico ha luogo ogni volta che si cambia il valore di una variabile nel vostro programma.

x = 2;
x++;
x += 4;

dichiarazione di funzione , simile alla dichiarazione variabile, rende la firma funzione nota al compilatore. Questo consente di chiamare una funzione nel codice sorgente prima che venga definito senza provocare un errore di compilazione.

int doSomething(float x);

Un definizione di funzione specifica il tipo di ritorno, il nome, l'elenco dei parametri, e le istruzioni per una funzione. Le prime tre di questi elementi deve corrispondere alla dichiarazione di funzione. Una funzione deve essere definita solo una volta in un dato programma.

int doSomething(float x)
{
    if( x < 0 )
    {
        x = -x;
    }
    return static_cast<int>(x);
}

È possibile combinare la funzione decalartion e la definizione in una sola, ma è necessario farlo prima che la funzione viene chiamata in qualsiasi punto del programma.

Ruolo Generale: Definizione = dichiarazione + spazio riservato.

Definizione, dichiarazione e assegnazione hanno due casi:

  1. per le variabili.
  2. per le funzioni.

Variabili :

- Definizione:
Per dire al compilatore di riservare la memoria per la variabile.

int x;

- Dichiarazione:
A dire il compilatore che la variabile definita in un altro posto.

extern int x;

- Assegnazione:
A dire il compilatore di mettere il valore nella variabile.

x = 0;

Funzioni :

- Definizione:

int functionDef(int x){
  int x;  
  ...  
  ...  
  ...  
  return x;  
}

- Dichiarazione: E 'solo il prototipo della funzione.

int functionDef(int x);

La risposta corretta dipende da quale lingua si sta parlando. linguaggi di programmazione hanno spesso la terminologia specifica, sia a causa della specifica lingua o la comunità cresciuta attorno al linguaggio. COBOL, indietro quando ho usato, aveva una diversa terminologia molto di più lingue tradizionali (nel senso dei linguaggi più vicino al mainstream di sviluppo del linguaggio, non aziendale mainstream). Forth sviluppato qualche strana terminologia.

Se conoscete l'inglese, di solito è possibile ottenere una buona idea di ciò che vuol dire una parola dal suo significato normale, ma non contare su di esso troppo. Lo stesso vale con le parole specifiche all'interno lingue o comunità linguistiche.

Si potrebbe dipendere la lingua, come è stato detto. Penso che in realtà dipende se le parole sono usate per cose come le classi. Per la maggior parte dei tipi di dati discussi qui, la questione potrebbe non avere molta rilevanza. In C ++ (vedi C ++ - Qual è la differenza tra un definizione e una dichiarazione? ), una classe o struct è sempre esattamente una definizione, ma possono essere dichiarate zero o più volte. Una classe non può essere dichiarato senza una definizione. Quindi, "ha dichiarato" potrebbe essere sinonimo di "usato".

Nella maggior parte delle lingue, semplici tipi come numeri interi non hanno bisogno di definizioni in modo che le classi fanno.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top