Pergunta

I tendem a usar as palavras definem, declarar e atribuir alternadamente, mas este parece causar ofensa a algumas pessoas. É este justificada? Devo usar apenas a palavra declarar pela primeira vez que eu atribuir a uma variável? Ou há mais do que isso?

Foi útil?

Solução

Definir e declarar são semelhantes, mas atribuir é muito diferente.

Aqui eu estou declarando (ou definir) uma variável:

int x;

Aqui eu estou atribuindo um valor a essa variável:

x = 0;

Aqui eu estou fazendo ambos em um comunicado:

int x = 0;

Nota

Nem todos os idiomas suportam declaração e atribuição em uma declaração:

T-SQL

declare x int;
set x = 0;

Alguns idiomas exigem que você atribuir um valor a uma variável sobre a declaração. Este requisito permite que o compilador ou intérprete da língua para inferir um tipo para a variável:

Python

x = 0

Outras dicas

A definição é onde um valor ou função é descrito, ou seja, o compilador ou programador é contada exatamente o que é, por exemplo.

int foo()
{
  return 1;
}

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

A declaração diz ao compilador, ou programador que a função ou variável existe. por exemplo.

int foo();
extern int var;

Uma atribuição é quando uma variável tem seu valor definido, geralmente com o operador =. por exemplo.

a = b;
a = foo();

É importante usar a terminologia correta, caso contrário as pessoas não vão saber o que você está falando, ou incorretamente supor que você não sabe o que está falando.

Estes termos muitas vezes têm significados precisos nos padrões para vários idiomas. Quando é esse o caso, eles não devem ser confundidos.

Em c, por exemplo:

  • Uma função pode ser definido apenas uma vez (quando você diz o que ele faz), mas também pode ser declarou , antes que (quando você diz que argumentos é preciso e que tipo ele retorna).

  • também uma variável é declarou quando você diz que tipo é, e isso acontece apenas uma vez para cada escopo. Mas você pode Atribuir um valor repetidamente. (Algumas línguas também diferenciar entre inicialização (dando uma variável um valor em tempo de declaração) e atribuição (alterando o valor mais tarde).)

As diferenças podem parecer sutil, mas eles são importantes. Não cada idioma faz com que as mesmas distinções, mas em C ++ um declaração de variável faz com que o tipo e nome da variável conhecido pelo compilador

int i;

A definição variável aloca armazenamento e especifica um valor inicial para a variável.

i = 1;

Você pode combinar uma declaração de variável e definição em um comunicado, como é comumente feito.

int x = 1;

Declarando uma variável dentro de uma função também deixará de lado a memória para a variável, então o seguinte código define implicitamente a variável como uma parte da sua declaração.

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

Desde a variável é definida automaticamente pelo compilador, ele irá conter o valor que estava no local de memória que foi alocada para ele. É por isso que não é seguro para usar variáveis ??automáticas até que você tenha atribuído explicitamente um valor conhecido para eles.

Um atribuição tem lugar qualquer momento você alterar o valor de uma variável no seu programa.

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

A declaração da função , semelhante à declaração de variável, faz com que a assinatura da função conhecido para o compilador. Isso permite que você chamar uma função em seu código-fonte antes de ser definido sem causar um erro do compilador.

int doSomething(float x);

A definição de função especifica o tipo de retorno, nome, lista de parâmetros e instruções para uma função. Os primeiros três destes elementos deve coincidir com a declaração da função. A função só deve ser definida uma vez em um determinado programa.

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

Você pode combinar a decalartion função e definição em um, mas você deve fazê-lo antes que a função é chamada em qualquer lugar em seu programa.

Papel Geral: Definição = declaração + espaço reservado.

Definição, declaração, e atribuição tem dois casos:

  1. Para variáveis.
  2. para funções.

Para Variáveis ??:

- Definição:
Para dizer ao compilador para a memória de reserva para a variável.

int x;

- Declaração:
Para dizer ao compilador que a variável definida em algum outro lugar.

extern int x;

- Assignment:
Para dizer ao compilador para colocar o valor na variável.

x = 0;

Para Funções :

- Definição:

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

- Declaração: É apenas o protótipo da função.

int functionDef(int x);

A resposta correta depende do idioma que você está falando. linguagens de computador muitas vezes têm terminologia específica, seja por causa da especificação da linguagem ou da comunidade crescido em torno da língua. COBOL, quando eu usei, teve uma terminologia muito diferente do que mais línguas principais (no sentido de línguas mais perto do mainstream do desenvolvimento da linguagem, não principais negócios). Forth desenvolvido alguma terminologia estranha.

Se você sabe Inglês, normalmente você pode ter uma boa idéia sobre o que significa uma palavra de seu significado normal, mas nunca contar com ele muito. O mesmo é verdade com palavras específicas em todo idiomas ou comunidades linguísticas.

Pode dependem do idioma, como já foi dito. Eu acho que realmente depende se as palavras são usadas para coisas como classes. Para a maioria dos tipos de dados discutidos aqui, a questão pode não ter muita relevância. Em C ++ (consulte c ++ - Qual é a diferença entre um definição e uma declaração? ), uma classe ou struct sempre tem precisamente uma definição, mas pode ser declarado zero ou mais vezes. A classe não pode ser declarada sem uma definição. Assim, "declarou" pode ser sinónimo de "usado".

Na maioria das linguagens, tipos simples, como números inteiros não precisa de definições da maneira que as classes fazer.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top