O que é uma definição de tipo?

Ao ler sobre tipos de dados, “definição de tipo” é frequentemente usada sem qualquer explicação prévia sobre o que significa.

Por exemplo, em https://en.wikipedia.org/wiki/Type_system , temos a frase “… já que C ++ tem regras mais rígidas em relação a definições de tipo …”

Qualquer ajuda para esclarecer qual a diferença entre, por exemplo, tipo e definição de tipo é muito apreciada!

Comentários

  • Você sabe o que é um tipo ? Então, uma definição de tipo é, como o termo sugere, a definição de um tipo. Eu ' não tenho certeza de qual é sua verdadeira pergunta aqui.

Resposta

“Definir” um tipo é o ato de construir um novo tipo composto por um ou mais tipos de dados pré-existentes. Por exemplo, o tipo “Número complexo” é frequentemente declarado como um par ordenado de “Números reais”:

Type Complex Real a Real b End 

a e b sendo as partes reais e imaginárias .

Este exemplo de pseudocódigo é uma “Definição de tipo”.

Comentários

  • Eu não ' acho que é isso que ' está sendo perguntado … Definir um tipo de dado abstrato é obviamente uma definição de tipo, mas não tem nada a ver com forte ou digitação fraca (parte da pergunta)

Resposta

De “The C ++ Programming Language” -by Bjarne Stroustrup, o criador do C ++.

Um tipo define um conjunto de valores possíveis e um conjunto de operações (para um objeto).

Além disso, as seguintes definições estão inter-relacionadas com o tipo tirado do mesmo livro

Uma declaração é uma declaração que introduz um nome no programa. Ele especifica um tipo para a entidade nomeada

Um objeto é alguma memória que contém um valor de algum tipo.

Um valor é um conjunto de bits interpretados de acordo com um tipo.

Uma variável é um objeto nomeado

Comentários

  • Isso não ' sem mencionar a definição de tipo .

Resposta

As variáveis podem conter diferentes tipos de valores, por exemplo, inteiros, reais, caracteres … Isso é chamado de TIPO da variável. Alguns idiomas são digitados dinamicamente. Isso significa que o intérprete ou o compilador decide o tipo da variável para você. Em linguagens de tipo estático, você mesmo deve definir o tipo ao declarar a variável. Esta é a DEFINIÇÃO DE TIPO.

Em linguagens estáticas de tipo forte, as regras proíbem misturar tipos diferentes. se você quiser adicionar, por exemplo, um real e um inteiro, você deve converter explicitamente o inteiro em real.

em uma linguagem de tipo fraco, você pode misturar tipos. mas como os padrões de bits de baixo nível diferem entre os tipos, você pode ter resultados indesejados.

A maioria dos idiomas está entre os dois. Ficará claro que efeitos indesejados não são aceitáveis, enquanto a necessidade de uma conversão explícita torna o código pesado. Portanto, a maioria dos compiladores fará uma conversão implícita para algumas operações padrão. Adicionar um real e um inteiro nesse caso provocará implicitamente uma conversão para real.

Comentários

  • O que é " pe " ? Além disso, não ' não vejo como o que você ' escreveu após o primeiro parágrafo se relaciona com a pergunta.
  • @ David: pe = exempli gratia = Por causa do exemplo = por exemplo … A frase " … uma vez que C ++ tem regras mais rígidas em relação às definições de tipo … " mostra, em minha opinião, que a pergunta é feita no contexto de digitação fraca e forte.
  • Aha – que ' s " por exemplo, ", em inglês – editado.
  • de fato é. meu erro.
  • Essa resposta demonstra uma variedade de mal-entendidos sérios sobre tipos e sistemas de tipos. Praticamente todas as frases desta resposta são incorretas, confusas ou enganosas. Para começar, os sistemas de tipos não envolvem apenas variáveis: 3+'a' não ' não envolve nenhuma variável, mas terá o tipo verificado. Dinamicamente " digitou " implementações de linguagem don ' t " decida " o tipo de qualquer coisa. As conversões implícitas não ' t tornam uma linguagem mais " dinamicamente " ou " fracamente " digitado.Geralmente, " tipagem " estática e dinâmica não são extremos opostos de um espectro, mas simplesmente falam sobre coisas inteiramente diferentes.

Deixe uma resposta

O seu endereço de email não será publicado. Campos obrigatórios marcados com *