Question

J'ai tendance à utiliser les mots définissent, déclarer et affecter de façon interchangeable, mais cela semble offenser certaines personnes. Est-ce justifié? Dois-je utiliser seulement le mot déclarer pour la première fois que je cède à une variable? Ou est-il plus que ça?

Était-ce utile?

La solution

Définir et déclarer mais sont similaires assigner est très différent.

Ici, je déclarais (ou définir) une variable:

int x;

Ici, j'assignant une valeur à cette variable:

x = 0;

Ici, je fais aussi bien dans une déclaration:

int x = 0;

Remarque

Toutes les langues ne prennent en charge la déclaration et l'affectation dans une instruction:

T-SQL

declare x int;
set x = 0;

Certaines langues exigent que vous attribuez une valeur à une variable sur déclaration. Cette exigence permet au compilateur ou un interprète de la langue pour en déduire un type de la variable:

Python

x = 0

Autres conseils

Une définition est où une valeur ou la fonction est décrite, à savoir le compilateur ou programmeur est dit précisément ce qu'il est, par exemple.

int foo()
{
  return 1;
}

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

Une déclaration indique au compilateur, ou programmeur qui existe la fonction ou variable. par exemple.

int foo();
extern int var;

Une affectation est quand une variable a son ensemble de valeurs, généralement avec l'opérateur =. par exemple.

a = b;
a = foo();

Il est important d'utiliser la terminologie correcte, sinon les gens ne sauront pas ce que vous parlez, ou supposent à tort que vous ne savez pas ce que vous parlez.

Ces termes ont souvent une signification précise dans les normes pour les différentes langues. Lorsque tel est le cas, ils ne doivent pas être confondus.

c par exemple:

  • fonction peut être défini une seule fois (quand vous dites ce qu'il fait), mais il peut aussi être a déclaré avant que (quand vous dites quels arguments il faut et de quel type il retourne).

  • également une variable est a déclaré quand vous dites de quel type il est, et cela se produit qu'une seule fois pour chaque champ. Mais vous pouvez assign une valeur à plusieurs reprises. (Certaines langues se différencient également entre initialisation (ce qui donne une variable une valeur au moment de la déclaration) et Affectation (modification de la valeur plus tard).)

Les différences peuvent sembler subtile, mais ils sont importants. Toutes les langues ne fait les mêmes distinctions, mais en C ++ une déclaration variable fait le type et le nom de la variable connue du compilateur

int i;

Une définition variable alloue le stockage et spécifie une valeur initiale de la variable.

i = 1;

Vous pouvez combiner une déclaration de variable et la définition dans une déclaration, comme cela se fait couramment.

int x = 1;

déclaration d'une variable dans une fonction sera également mis de côté pour la variable de mémoire, de sorte que le code ci-dessous définit implicitement la variable a comme une partie de sa déclaration.

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

il contient Comme variable est automatiquement <=> définie par le compilateur, quelle que soit la valeur était à l'emplacement de mémoire qui a été allouée. C'est pourquoi il est pas sûr d'utiliser des variables automatiques jusqu'à ce que vous avez attribué explicitement une valeur connue pour eux.

Affectation a lieu chaque fois que vous modifiez la valeur d'une variable dans votre programme.

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

Déclaration de fonction , semblable à la déclaration de variable, fait la signature de fonction connue du compilateur. Cela vous permet d'appeler une fonction dans votre code source avant qu'elle soit définie sans provoquer une erreur de compilation.

int doSomething(float x);

Une définition de fonction spécifie le type de retour, le nom, la liste des paramètres et des instructions pour une fonction. Les trois premiers de ces éléments doit correspondre à la déclaration de fonction. Une fonction ne doit être définie une fois dans un programme donné.

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

Vous pouvez combiner la fonction decalartion et la définition en un seul, mais vous devez le faire avant que la fonction est appelée partout dans votre programme.

Général Rôle: Définition = déclaration + espace réservé.

Définition, déclaration et cession ont deux cas:

  1. pour les variables.
  2. pour les fonctions.

Variables :

- Définition: Pour dire au compilateur de réserver de la mémoire pour la variable.

int x;

- Déclaration: Pour dire au compilateur que la variable définie dans un autre endroit.

extern int x;

- Affectation: Pour dire au compilateur de mettre la valeur dans la variable.

x = 0;

Fonctions :

- Définition:

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

- Déclaration: Il est juste le prototype de la fonction.

int functionDef(int x);

La réponse dépend de la langue que vous parlez. Les langages informatiques ont souvent une terminologie spécifique, que ce soit en raison de la spécification du langage ou de la communauté développée autour de la langue. COBOL, en arrière quand je l'ai utilisé, avait une terminologie différente bien que les langues plus grand public (dans le sens des langues plus proche du courant dominant du développement des langues, pas d'affaires grand public). Forth développé une terminologie étrange.

Si vous connaissez l'anglais, vous pouvez généralement obtenir une bonne idée de ce que signifie un mot de son sens normal, mais jamais compter sur elle trop. La même chose est vraie avec des mots spécifiques dans votre langue ou les communautés linguistiques.

Cela peut dépendre de la langue, comme cela a été dit. Je pense que cela dépend vraiment de savoir si les mots sont utilisés pour des choses comme les classes. Pour la plupart des types de données présentés ici, la question pourrait ne pas avoir beaucoup de pertinence. En C ++ (voir c ++ - Quelle est la différence entre un définition et une déclaration? ), une classe ou struct a toujours précisément une définition mais peuvent être déclarées nulles ou plusieurs fois. Une classe ne peut être déclarée sans définition. Ainsi, « a déclaré » pourrait être synonyme de « utilisé ».

Dans la plupart des langues, des types simples tels que les entiers ne ont pas besoin de définitions de la manière que les classes font.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top