Frage

Ich neige dazu, die Wörter zu verwenden, zu definieren, deklarieren und zuweisen austauschbar, aber dies scheint Anstoß zu einigen Leuten zu verursachen. Ist dies gerechtfertigt? Soll ich nur das Wort zum ersten Mal erklären verwende ich einen Variablen zuweisen? Oder ist es mehr als das?

War es hilfreich?

Lösung

Definieren

und erklären sind ähnlich, aber vergeben ist sehr unterschiedlich.

Hier bin ich zu erklären (oder die Definition) eine Variable:

int x;

Hier habe ich Wert auf diese Variable am zuweisen:

x = 0;

Hier mache ich sowohl in einer Erklärung:

int x = 0;

Hinweis

Nicht alle Sprachen unterstützen Deklaration und Zuweisung in einer Erklärung:

T-SQL

declare x int;
set x = 0;

Einige Sprachen erfordern, dass Sie einen Wert in eine Variable bei der Deklaration zuweisen. Diese Anforderung kann der Compiler oder Interpreter der Sprache einen Typ für die Variable schließen:

Python

x = 0

Andere Tipps

Eine Definition ist, wenn ein Wert oder eine Funktion beschrieben wird, das heißt der Compiler oder Programmierer erzählt wird genau das, was es ist, z.

int foo()
{
  return 1;
}

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

Eine Deklaration teilt den Compiler oder Programmierer, die die Funktion oder Variable existiert. z.

int foo();
extern int var;

Eine Zuordnung ist, wenn eine Variable ihren Wert festgelegt ist, in der Regel mit dem Operator =. z.

a = b;
a = foo();

Es ist wichtig, die richtige Terminologie zu verwenden, sonst werden die Leute nicht wissen, was Sie reden, oder falsch davon ausgehen, dass Sie nicht wissen, was Sie reden.

Diese Begriffe haben oft präzise Bedeutungen in den Normen für verschiedene Sprachen. Wenn das der Fall ist, sollte sie nicht verschmelzt werden.

c zum Beispiel:

  • eine Funktion sein kann definiert nur einmal (wenn Sie sagen, was es tut), aber es auch sein kann, erklärt vor, dass (wenn Sie sagen, welche Argumente es dauert und welche Art es zurückgibt).

  • ebenfalls eine Variable erklärt , wenn Sie sagen, welche Art es ist, und dies geschieht nur einmal für jeden Anwendungsbereich. Sie können aber assign ein Wert wiederholt. (Einige Sprachen unterscheiden auch zwischen Initialisierung (was eine Variable ein Wert bei der Deklaration) und Zuordnung (Ändern der Wert später).)

Die Unterschiede können subtil erscheinen, aber sie sind wichtig. Nicht jede Sprache macht die gleichen Unterschiede, aber in C ++ eine Variablendeklaration macht den Typ und den Namen der Variablen an den Compiler bekannt

int i;

A variable Definition zuordnet Lagerung und gibt einen Anfangswert für die Variable.

i = 1;

Sie können eine Variable Deklaration und Definition in einer Anweisung kombinieren, wie es üblicherweise getan wird.

int x = 1;

eine Variable innerhalb einer Funktion Deklarieren auch Speicher für die Variable beiseite legen, so dass der folgende Code definiert implizit variable a als Teil ihrer Erklärung.

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

Da die Variable a automatisch durch den Compiler definiert ist, wird es enthält Wert, was auch immer in der Speicherstelle war, die für sie reserviert wurde. Aus diesem Grund ist es nicht sicher ist die automatische Variablen zu verwenden, bis Sie explizit einen bekannten Wert zu ihnen zugewiesen haben.

Eine Zuordnung stattfindet, immer wenn Sie den Wert einer Variablen in Ihrem Programm ändern.

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

Funktionsdeklaration , ähnlich wie bei der Variablendeklaration, macht die Funktion Signatur an den Compiler bekannt. Auf diese Weise können Sie eine Funktion in Ihrem Quellcode nennen, bevor er, ohne dass es einen Compiler-Fehler definiert ist.

int doSomething(float x);

Funktionsdefinition gibt den Rückgabetyp, Namen, Parameterliste und Anweisungen für eine Funktion. Die ersten drei dieser Elemente müssen die Funktionsdeklaration übereinstimmen. Eine Funktion darf nur einmal in einem bestimmten Programm definiert werden.

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

Sie können die Funktion decalartion und Definition miteinander kombinieren, aber Sie müssen dies tun, bevor die Funktion überall in Ihrem Programm aufgerufen wird.

Allgemeine Rolle: Definition = Deklaration + reservierter Platz.

Definition, Deklaration und Zuweisung zwei Fällen haben:

  1. für Variablen.
  2. für Funktionen.

Variablen :

- Definition:
Um den Compiler zu sagen Speicher für die Variable reserviert werden.

int x;

- Erklärung:
Um den Compiler zu sagen, dass die Variable in irgendwo anders definiert.

extern int x;

- Zuordnung:
Um die Compiler zu sagen, den Wert in den Variablen zu setzen.

x = 0;

Funktionen :

- Definition:

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

- Erklärung: Es ist nur der Prototyp der Funktion.

int functionDef(int x);

Die richtige Antwort hängt davon ab, welche Sprache Sie sprechen. Computersprachen haben oft spezifische Terminologie, entweder wegen der Sprachspezifikation oder der Gemeinschaft um die Sprache aufgewachsen. COBOL, zurück, wenn ich es benutzen, hatte eine ganz andere Terminologie als Mainstream-Sprachen (im Sinne von Sprachen näher an den Mainstream der Sprachentwicklung, nicht Mainstream-Geschäft). Forth entwickelt eine seltsame Terminologie.

Wenn Sie Englisch kennen, können Sie in der Regel eine gute Idee, was ein Wort bedeutet aus seiner normalen Bedeutung, aber zählen nicht zu viel drauf. Das gleiche gilt mit bestimmten Wörtern in Sprachen oder Sprachgemeinschaften.

Es könnte von der Sprache abhängig, wie gesagt. Ich denke, es hängt wirklich davon ab, ob die Worte für Dinge wie Klassen verwendet werden. Für die meisten der Datentypen hier diskutiert, kann die Frage nicht viel Bedeutung haben. In C ++ (siehe c ++ - Was ist der Unterschied zwischen einem Definition und eine Erklärung? ), eine Klasse oder Struktur haben immer genau eine Definition, sondern können null oder mehr Male deklariert werden. Eine Klasse kann nicht ohne eine Definition deklariert werden. So „erklärt“ sein könnte gleichbedeutend mit „benutzt“.

In den meisten Sprachen, einfache Typen wie ganze Zahlen keine Definitionen müssen in der Art und Weise, die Klassen zu tun.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top