[Powered by Google Translate] JORDAN Jozwiak: fundição Tipo, no sentido mais simples, é uma
modo para alterar a interpretação de um computador de alguns dados por
implícita ou explicitamente, alterando seu tipo de dados.
Como alterar um int a um float, ou vice-versa.
Para entender tipo de vazamento, é preciso
começar com o básico -
tipos de dados próprios.
Em linguagens como C, todas as variáveis ​​têm algum tipo
do tipo de dados que determina como o computador, e do mesmo modo
o usuário, que interpreta variável.
Numéricos tipos de dados, tais como um int, longo tempo float, e
duplo, todos têm suas próprias características únicas e são
usado para especificar valores com os mais variados e de precisão.
Tipo de vazamento nos permite ter um número de ponto flutuante como
3,14 e obter a peça antes do decimal, 3 neste caso,
, lançando-a um int.
Vamos dar um exemplo do idioma Inglês para um breve
revisão de tipos, e para ver como tipo de vazamento pode mudar
a nossa forma de interpretar uma parte dos dados.
Para os dados, vamos dar os símbolos aqui.
Eu só referir a essas linhas cuidadosamente configurados como
símbolos, mas como alguém que conhece o idioma Inglês,
você imediatamente reconhecer que eles são, de fato, as letras.
Você implicitamente compreendido o tipo de dados.
Olhando para esta seqüência de letras, podemos ver dois
palavras diferentes, cada um com seu próprio significado.
Não há o substantivo, o vento, como o vento sopra no exterior.
E há o verbo, o vento, como no que eu preciso
enrolar meu relógio analógico.
Este é um exemplo interessante, porque podemos ver
como o tipo que nós atribuímos aos nossos dados, se substantivo ou
verbais, muda a forma como usamos esses dados -
como o vento palavra ou vento.
Apesar de um computador não se preocupa com gramática e peças
de fala Inglês, o mesmo princípio básico se aplica.
Isto é, nós podemos mudar a interpretação do exato
mesmos dados armazenados na memória simplesmente convertê-lo a um
tipo diferente.
Aqui estão os tamanhos dos tipos mais comuns em um 32-bit
sistema operacional.
Temos um char menos 1 byte int e float de 4 bytes, um longo
de comprimento e uma dupla de 8 bytes.
Porque um int ocupa 4 bytes, vai demorar até 32 bits
quando ele é armazenado na memória como uma série binária
de zeros e uns.
Enquanto a nossa variável permanece como um tipo int, o
computador sempre converter os uns e zeros de
binário para o número original.
No entanto, teoricamente poderia lançar os 32
bits em uma série de tipos booleanos.
E então o computador não verá mais um número, mas
vez, uma coleção de zeros e uns.
Nós também pode tentar ler esses dados como um numérico diferente
tipo, ou mesmo como uma seqüência de quatro caracteres.
Ao lidar com números em casting, você deve considerar como
a precisão do seu valor será afetada.
Tenha em mente que a precisão pode permanecer o mesmo,
ou você pode perder precisão, mas você nunca pode ganhar precisão.
Vamos passar para as três formas mais comuns que você pode
perder precisão.
Lançando um float para um int causará truncamento de tudo
depois do ponto decimal, então você fica
com o número inteiro.
Se tomarmos o x bóia que será igual a 3,7, pode-se lançar
esta variável x para um int, basta escrever em int
parênteses.
Sempre que usamos este termo aqui, nós vamos efetivamente
estar usando o valor de três, porque nós truncado
tudo depois do ponto decimal.
Nós também podemos converter um longo tempo para um int, que será
similarmente levar a uma perda de bits de ordem superior.
Um longo tempo ocupa 8 bytes, ou 64 bits na memória.
Então, quando nós lançá-lo para um int que só tem 4 bytes, ou 32
bits, que são, essencialmente, cortando todos os bits que
representam os valores mais elevados binários.
Você também pode lançar um duplo para um float, que vai dar
você flutuar o mais próximo possível do duplo sem
necessariamente arredondamento lo.
Semelhante ao nosso longo tempo de conversão int, a perda de
precisão é porque um duplo contém mais dados.
A dupla permitirá que você armazene 53 bits significativos,
cerca de 16 dígitos significativos.
Considerando uma bóia só permitem armazenar 24
bits significativos, cerca de sete dígitos significativos.
Nestes dois últimos casos, pode ser útil para pensar
digite elenco como redimensionar uma foto.
Quando você vai de um tamanho grande para um tamanho pequeno, você não pode ver
coisas tão claramente, porque você perdeu dados
sob a forma de pixels.
Tipo de vazamento também pode causar problemas quando
ints para lançar carros alegóricos.
Desde que flutua em uma máquina de 32 bits só tem 24
bits significativos, eles não podem representar precisamente valores
ao longo de 2 à potência de 24, ou 16777217.
Agora vamos falar sobre o elenco explícito e implícito.
Conversão explícita é quando escrevemos o tipo entre parênteses
antes de um nome de variável.
Como exemplo, antes que escreveu int entre parênteses antes de nossa
flutuar variável x.
Desta forma, obtemos o valor int, o
valor truncado de 3,7 -
3.
A conversão implícita é quando o compilador muda automaticamente
tipos semelhantes às de um tipo super, ou exercer algum outro tipo de
lançando sem exigir que o usuário escreva
qualquer código adicional.
Por exemplo, quando adicionar 5 e 1,1, nossos valores já
tipos associados a eles.
O 5 é um int, enquanto 1,1 é um flutuante.
A fim de adicioná-los, o computador lança 5 em uma bóia,
que teria sido a mesma coisa que escrevendo 5.0 na
primeiro lugar.
Mas esta forma de dizer flutuador 5, ou 5,0, mais o que já era
uma bóia, 1.1, e de lá podemos realmente adicionar estes
valores e obter o valor 6.1.
A conversão implícita também nos permite atribuir variáveis ​​de
tipos diferentes uns dos outros.
Nós sempre podemos atribuir um tipo menos precisa em um mais
um preciso.
Por exemplo, se temos um duplo x, y e um int -
e estes poderiam ter quaisquer valores que estabelecemos que eles -
podemos dizer x é igual a y.
Porque o casal tem mais precisão do que um int, então nós
não vai perder nenhuma informação.
Por outro lado, não seria necessariamente correcto afirmar
y é igual a x, como a dupla pode ter um valor maior do que
o número inteiro.
E assim, o número inteiro pode não ser capaz de realizar todos os
informações armazenadas na dupla.
A conversão implícita também é usado em operadores de comparação como
maior do que, menor que, ou o operador de igualdade.
Dessa forma, podemos dizer que se 5,1 é maior do que 5, e temos a
resultado verdadeiro.
Porque 5 é um int, mas vai ser convertido para um flutuador, a fim de
ser comparado com o flutuador 5.1, diríamos 5.1 é
maior do que 5,0.
O mesmo é verdade em dizer se é igual a 2,0 é igual a 2.
Nós também obter verdade, pois o computador vai lançar o
inteiro de 2 a flutuar e então dizer 2,0 equivale a 2,0 é igual,
isso é verdade.
Não se esqueça que também pode lançar entre ints e chars,
ou valores ASCII.
Chars também precisa ser reduzido a binário, que é por isso que você
pode converter facilmente entre chars e seus respectivos
Valores ASCII.
Para saber mais sobre isso, confira nosso vídeo em ASCII.
Quando você toma um momento para pensar sobre como os dados estão armazenados,
ele começa a fazer muito sentido.
É como a diferença entre o vento eo vento.
Os dados são os mesmos, mas o tipo pode alterar a forma como
interpretá-lo.
Meu nome é Jordan Jozwiak, este CS50.