Pregunta

que tienden a utilizar las palabras definen, declarar y asignar de manera intercambiable pero esto parece ofender a algunas personas. ¿Está justificado? Debería utilizar sólo la palabra declarar por primera vez le asigno a una variable? O hay algo más que eso?

¿Fue útil?

Solución

Definir y declarar son similares, pero asignar es muy diferente.

Aquí estoy declarando (o definir) una variable:

int x;

A continuación, voy a asignar un valor a esa variable:

x = 0;

Aquí estoy haciendo tanto en una declaración:

int x = 0;

Nota:

No todos los idiomas admiten declaración y asignación en una declaración:

T-SQL

declare x int;
set x = 0;

Algunos idiomas requieren que se asigna un valor a una variable cuando se declara. Este requisito permite que el compilador o intérprete de la lengua para inferir un tipo de la variable:

Python

x = 0

Otros consejos

Una definición es donde se describe un valor o función, se le dice es decir, el compilador o programador precisamente lo que es, por ejemplo.

int foo()
{
  return 1;
}

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

Una declaración indica al compilador, o programador que existe la función o variable. por ejemplo.

int foo();
extern int var;

Una asignación es cuando una variable tiene su valor establecido, por lo general con el operador =. por ejemplo.

a = b;
a = foo();

Es importante utilizar la terminología correcta, de lo contrario la gente no sabe lo que está hablando, o incorrectamente asume que usted no sabe lo que está hablando.

Estos términos a menudo tienen significados precisos en los estándares para varios lenguajes. Cuando ese es el caso, no deberían confundirse.

En c por ejemplo:

  • Una función puede ser definido sólo una vez (cuando se dice lo que hace), pero también puede ser declararon antes de eso (cuando dicen qué argumentos que se necesita y qué tipo devuelve).

  • asimismo una variable es declarada cuando se dice de qué tipo es, y esto ocurre sólo una vez para cada ámbito de aplicación. Pero es posible que Asignar un valor varias veces. (Algunos idiomas también diferencian entre inicialización (dando una variable un valor en el momento de la declaración) y asignación (cambiando el valor más adelante).)

Las diferencias pueden parecer sutiles, pero son importantes. No todos los idiomas hace que las mismas distinciones, pero en C ++ un declaración de variables hace que el tipo y el nombre de la variable conocida por el compilador

int i;

A definición de la variable asigna almacenamiento y especifica un valor inicial para la variable.

i = 1;

Puede combinar una declaración de variables y definición en una declaración, como se hace comúnmente.

int x = 1;

La declaración de una variable dentro de una función también reservará memoria para la variable, por lo que el siguiente código define implícitamente la variable a como parte de su declaración.

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

Desde <=> variable se define automáticamente por el compilador, contendrá cualquier valor que se encontraba en la posición de memoria que se ha asignado para ello. Es por esto que no es seguro de usar variables automáticas hasta que se haya asignado explícitamente un valor conocido para ellos.

Un asignación se lleva a cabo cada vez que cambia el valor de una variable en su programa.

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

declaración de la función , de forma similar a la declaración de variables, hace que la firma de función conocida por el compilador. Esto le permite llamar a una función en el código fuente antes de que se define sin causar un error de compilación.

int doSomething(float x);

definición de función especifica el tipo de retorno, nombre, lista de parámetros, y las instrucciones para una función. Los tres primeros de estos elementos deben coincidir con la declaración de la función. Una función sólo se debe definir una vez en un programa dado.

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

Puede combinar la función decalartion y definición en una sola, pero hay que hacerlo antes de la función se llama en cualquier parte de su programa.

Función general: Definición = + declaración de espacio reservado.

Definición, declaración y asignación tiene dos casos:

  1. para variables.
  2. para funciones.

En Variables :

- Definición:
Para indicar al compilador que reservar memoria para la variable.

int x;

- Declaración:
Para indicar al compilador que la variable se define en otro lugar.

extern int x;

- Asignación:
Para indicar al compilador para poner el valor en la variable.

x = 0;

En Funciones :

- Definición:

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

- Declaración: Es sólo el prototipo de la función.

int functionDef(int x);

La respuesta correcta depende de qué idioma está hablando. Los lenguajes de programación a menudo tienen una terminología específica, ya sea debido a la especificación del lenguaje o de la comunidad crecido alrededor de la lengua. COBOL, cuando yo usé, tenía una terminología diferente tanto de lo más idiomas principales (en el sentido de las lenguas más cercanas a la corriente principal del desarrollo del lenguaje, no negocio principal). Forth desarrollado cierta terminología extraña.

Si sabes Inglés, normalmente se puede obtener una buena idea de lo que significa una palabra de su significado normal, pero nunca contar con ello demasiado. Lo mismo es cierto con palabras específicas a través de los idiomas o las comunidades lingüísticas.

Se podría depender de la lengua, como se ha dicho. Creo que realmente depende de si las palabras se utilizan para cosas como clases. Para la mayoría de los tipos de datos discutidos aquí, la cuestión podría no tener mucha relevancia. En C ++ (ver c ++ - ¿Cuál es la diferencia entre una definición y una declaración? ), una clase o estructura siempre tiene precisamente una definición, pero se pueden declarar cero o más veces. Una clase no puede ser declarada sin una definición. Así "declarada" podría ser sinónimo de "usado".

En la mayoría de los idiomas, tipos simples, tales como números enteros no necesitan definiciones en la forma que lo hacen las clases.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top