1 00:00:07,632 --> 00:00:10,270 [Powered by Google Translate] Jordan Jozwiak: fundición Tipo, no sentido máis simple, é unha 2 00:00:10,270 --> 00:00:13,300 xeito para cambiar a interpretación de un ordenador uns datos 3 00:00:13,300 --> 00:00:16,560 implícita ou explicitamente, cambiando o seu tipo de datos. 4 00:00:16,560 --> 00:00:19,940 Como cambiar un int a un float, ou viceversa. 5 00:00:19,940 --> 00:00:21,550 Para entender tipo de escape, é preciso 6 00:00:21,550 --> 00:00:22,680 comezar co básico - 7 00:00:22,680 --> 00:00:24,140 tipos de datos propios. 8 00:00:24,140 --> 00:00:26,960 En linguaxes como C, todas as variables teñen algún tipo 9 00:00:26,960 --> 00:00:29,690 do tipo de datos que determina como o ordenador, e do mesmo xeito 10 00:00:29,690 --> 00:00:32,140 o usuario, que interpreta variable. 11 00:00:32,140 --> 00:00:35,160 Numéricos tipos de datos, tales como un int, longo tempo float, e 12 00:00:35,160 --> 00:00:38,110 dobre, todos teñen as súas propias características únicas e son 13 00:00:38,110 --> 00:00:41,370 usado para indicar valores cos máis variados e de precisión. 14 00:00:41,370 --> 00:00:44,800 Tipo de escape nos permite ter un número de punto flotante como 15 00:00:44,800 --> 00:00:49,170 3,14 e obter a peza antes do decimal, 3, neste caso, 16 00:00:49,170 --> 00:00:51,590 , Lanzándose a un int. 17 00:00:51,590 --> 00:00:53,900 Imos dar un exemplo do idioma inglés para un breve 18 00:00:53,900 --> 00:00:56,910 revisión de tipos, e para ver como tipo de escape pode cambiar 19 00:00:56,910 --> 00:00:59,380 a nosa forma de interpretar unha parte dos datos. 20 00:00:59,380 --> 00:01:05,269 Para os datos, imos dar os símbolos aquí. 21 00:01:05,269 --> 00:01:07,570 Eu só referirse a esas liñas coidadosamente configurados como 22 00:01:07,570 --> 00:01:10,100 símbolos, pero como alguén que coñece o idioma inglés, 23 00:01:10,100 --> 00:01:12,750 vostede inmediatamente recoñecer que son, de feito, as letras. 24 00:01:12,750 --> 00:01:15,580 Vostede implicitamente comprendido o tipo de datos. 25 00:01:15,580 --> 00:01:17,620 Mirando para esta secuencia de letras, podemos ver dous 26 00:01:17,620 --> 00:01:20,140 palabras distintas, cada un co seu propio significado. 27 00:01:20,140 --> 00:01:25,530 Non hai o substantivo, o vento, como o vento sopra no exterior. 28 00:01:25,530 --> 00:01:28,280 E hai o verbo, o vento, como no que eu teño 29 00:01:28,280 --> 00:01:31,410 enrolar meu reloxo analóxico. 30 00:01:31,410 --> 00:01:33,420 Este é un exemplo interesante, porque podemos ver 31 00:01:33,420 --> 00:01:36,270 como o tipo que atribuímos aos nosos datos, se substantivo ou 32 00:01:36,270 --> 00:01:39,080 verbais, cambia o xeito no que usan eses datos - 33 00:01:39,080 --> 00:01:41,730 como o vento palabra ou vento. 34 00:01:41,730 --> 00:01:44,100 A pesar de un ordenador non se preocupa gramática e pezas 35 00:01:44,100 --> 00:01:47,750 de fala inglés, o mesmo principio básico aplicable. 36 00:01:47,750 --> 00:01:50,290 É dicir, podemos cambiar a interpretación do exacto 37 00:01:50,290 --> 00:01:53,140 mesmos datos almacenados na memoria simplemente convertela lo a un 38 00:01:53,140 --> 00:01:54,576 tipo. 39 00:01:54,576 --> 00:01:57,250 Aquí están os tamaños dos tipos máis comúns nun 32 bits 40 00:01:57,250 --> 00:01:58,340 sistema operativo. 41 00:01:58,340 --> 00:02:02,070 Temos un char menos 1 byte int e float de 4 bytes, un longo 42 00:02:02,070 --> 00:02:04,390 de lonxitude e unha dobre de 8 bytes. 43 00:02:04,390 --> 00:02:07,670 Porque un int ocupa 4 bytes, vai levar ata 32 bits 44 00:02:07,670 --> 00:02:10,060 cando é almacenado na memoria como unha serie binaria 45 00:02:10,060 --> 00:02:11,500 de ceros e uns. 46 00:02:11,500 --> 00:02:14,020 Mentres que a nosa variable permanece como un tipo int, o 47 00:02:14,020 --> 00:02:16,740 ordenador sempre converter os uns e ceros de 48 00:02:16,740 --> 00:02:19,120 binario para o número orixinal. 49 00:02:19,120 --> 00:02:21,270 Con todo, teoricamente podería lanzar os 32 50 00:02:21,270 --> 00:02:23,510 bits nunha serie de tipos booleanos. 51 00:02:23,510 --> 00:02:26,090 E entón o ordenador non verá máis un número, pero 52 00:02:26,090 --> 00:02:28,810 vez, unha colección de ceros e uns. 53 00:02:28,810 --> 00:02:31,570 Tamén pode tentar ler estes datos como un número diferente 54 00:02:31,570 --> 00:02:34,660 tipo, ou mesmo como unha secuencia de catro caracteres. 55 00:02:34,660 --> 00:02:37,820 Ao tratar con números casting, ten que considerar como 56 00:02:37,820 --> 00:02:40,470 a precisión do seu valor será afectada. 57 00:02:40,470 --> 00:02:43,240 Teña presente que a precisión pode permanecer o mesmo, 58 00:02:43,240 --> 00:02:47,150 ou pode perder precisión, pero nunca pode gañar precisión. 59 00:02:47,150 --> 00:02:49,060 Imos pasar as tres formas máis comúns que pode 60 00:02:49,060 --> 00:02:50,400 perder precisión. 61 00:02:50,400 --> 00:02:53,060 Lanzando un float para un int causará truncamento de todo 62 00:02:53,060 --> 00:02:54,900 despois do punto decimal, entón queda 63 00:02:54,900 --> 00:02:55,950 co número enteiro. 64 00:02:55,950 --> 00:03:02,000 Se tomamos o X boia que será igual a 3,7, pódese lanzar 65 00:03:02,000 --> 00:03:05,580 esta variable x para un int, pode escribir en int 66 00:03:05,580 --> 00:03:07,050 parénteses. 67 00:03:07,050 --> 00:03:10,010 Sempre que usamos este termo aquí, nós imos efectivamente 68 00:03:10,010 --> 00:03:12,810 estar usando o valor de tres, porque truncado 69 00:03:12,810 --> 00:03:14,880 todo despois do punto decimal. 70 00:03:14,880 --> 00:03:17,210 Tamén podemos converter un longo tempo para un int, que será 71 00:03:17,210 --> 00:03:20,760 Similarmente levar a unha perda de bits de orde superior. 72 00:03:20,760 --> 00:03:23,910 Un longo tempo ocupa 8 bytes, ou 64 bits na memoria. 73 00:03:23,910 --> 00:03:27,050 Entón, cando nós lanza-lo para un int que só ten 4 bytes, ou 32 74 00:03:27,050 --> 00:03:29,820 bits, que son, esencialmente, cortando todos os bits que 75 00:03:29,820 --> 00:03:32,420 representan os valores máis elevados binarios. 76 00:03:32,420 --> 00:03:34,690 Tamén pode lanzar un dobre para un float, que vai dar 77 00:03:34,690 --> 00:03:37,340 vostede flotar o máis próximo posible do dobre sen 78 00:03:37,340 --> 00:03:39,100 necesariamente redondeo lo. 79 00:03:39,100 --> 00:03:41,840 Semellante ao noso longo tempo de conversión int, a perda de 80 00:03:41,840 --> 00:03:44,890 precisión é porque un dobre contén máis datos. 81 00:03:44,890 --> 00:03:47,910 O dúo permitirá que almacene 53 bits significativos, 82 00:03:47,910 --> 00:03:50,650 preto de 16 díxitos significativos. 83 00:03:50,650 --> 00:03:53,050 Considerando unha boia só permiten almacenar 24 84 00:03:53,050 --> 00:03:56,235 bits significativos, arredor de sete díxitos significativos. 85 00:03:56,235 --> 00:03:58,700 Nestes dous últimos casos, pode ser útil para pensar 86 00:03:58,700 --> 00:04:01,200 escriba elenco como redimensionar unha foto. 87 00:04:01,200 --> 00:04:03,860 Cando vai dun tamaño grande para un tamaño pequeno, non pode ver 88 00:04:03,860 --> 00:04:05,600 cousas tan claramente, porque perdeu datos 89 00:04:05,600 --> 00:04:07,530 baixo a forma de píxeles. 90 00:04:07,530 --> 00:04:09,270 Tipo de escape tamén pode causar problemas cando 91 00:04:09,270 --> 00:04:11,050 ints para lanzar coches alegóricos. 92 00:04:11,050 --> 00:04:13,920 Dende que flutúa nunha máquina de 32 bits só ten 24 93 00:04:13,920 --> 00:04:16,959 bits significativos, non poden representar precisamente valores 94 00:04:16,959 --> 00:04:22,750 ao longo de 2 a potencia de 24 ou 16777217. 95 00:04:22,750 --> 00:04:25,540 Agora imos falar sobre o reparto explícito e implícito. 96 00:04:25,540 --> 00:04:28,000 Conversión explícita é cando escribimos tipo entre parénteses 97 00:04:28,000 --> 00:04:29,430 antes dun nome de variable. 98 00:04:29,430 --> 00:04:33,100 Como exemplo, antes que escribiu int entre parénteses antes da nosa 99 00:04:33,100 --> 00:04:35,640 flotar variable x. 100 00:04:35,640 --> 00:04:37,200 Deste xeito, obtemos o valor int, o 101 00:04:37,200 --> 00:04:38,593 valor truncado de 3,7 - 102 00:04:38,593 --> 00:04:40,370 3. 103 00:04:40,370 --> 00:04:42,970 A conversión implícita é cando o compilador cambia automaticamente 104 00:04:42,970 --> 00:04:46,340 tipos semellantes ás dun tipo super, ou exercer algún outro tipo de 105 00:04:46,340 --> 00:04:48,310 lanzando sen esixir que o usuario escriba 106 00:04:48,310 --> 00:04:49,720 un código adicional. 107 00:04:49,720 --> 00:04:53,550 Por exemplo, cando engadir 5 e 1,1, os nosos valores xa 108 00:04:53,550 --> 00:04:55,680 tipo asociados a eles. 109 00:04:55,680 --> 00:04:59,480 O 5 é un int, mentres 1,1 é un flotante. 110 00:04:59,480 --> 00:05:02,390 A fin de engadila los, o ordenador lanza 5 nunha boia, 111 00:05:02,390 --> 00:05:04,530 que sería o mesmo que escribindo 5.0 na 112 00:05:04,530 --> 00:05:06,476 primeiro lugar. 113 00:05:06,476 --> 00:05:13,210 Pero esta forma de dicir flotador 5 ou 5,0, máis o que xa era 114 00:05:13,210 --> 00:05:16,960 unha boia, 1.1, e de alí podemos realmente engadir estes 115 00:05:16,960 --> 00:05:18,640 valores e obter o valor 6.1. 116 00:05:21,170 --> 00:05:23,500 A conversión implícita tamén nos permite asignar variables de 117 00:05:23,500 --> 00:05:25,590 tipos diferentes uns dos outros. 118 00:05:25,590 --> 00:05:28,110 Sempre podemos asignar un tipo menos que nun máis 119 00:05:28,110 --> 00:05:29,250 un preciso. 120 00:05:29,250 --> 00:05:37,060 Por exemplo, se temos un dobre x, y e un int - 121 00:05:37,060 --> 00:05:40,120 e estes poderían ter os valores que establecemos que - 122 00:05:40,120 --> 00:05:43,560 podemos dicir x é igual a y. 123 00:05:43,560 --> 00:05:46,340 Porque a parella ten máis precisión que un int, entón nós 124 00:05:46,340 --> 00:05:48,380 non vai perder ningunha información. 125 00:05:48,380 --> 00:05:50,420 Por outra banda, non sería necesariamente correcto afirmar 126 00:05:50,420 --> 00:05:54,060 y é igual a x, como a dobre pode ter un valor maior que 127 00:05:54,060 --> 00:05:55,220 o número enteiro. 128 00:05:55,220 --> 00:05:57,420 E así, o número enteiro pode non ser capaz de realizar todos os 129 00:05:57,420 --> 00:05:59,560 informacións almacenadas na dobre. 130 00:05:59,560 --> 00:06:02,610 A conversión implícita tamén é usado en operadores de comparación como 131 00:06:02,610 --> 00:06:06,410 maior que, menor que, ou o operador de igualdade. 132 00:06:06,410 --> 00:06:13,050 Desta forma, podemos dicir que se 5,1 é maior que 5, e temos a 133 00:06:13,050 --> 00:06:14,750 resultado real. 134 00:06:14,750 --> 00:06:18,470 Porque 5 é un int, pero vai ser convertido para un flotador, a fin de 135 00:06:18,470 --> 00:06:22,090 ser comparado co flotador 5.1, diriamos 5.1 é 136 00:06:22,090 --> 00:06:24,550 maior que 5,0. 137 00:06:24,550 --> 00:06:31,320 O mesmo é certo en dicir se é igual a 2,0 é igual a 2. 138 00:06:31,320 --> 00:06:34,190 Tamén obter verdade, pois o ordenador vai lanzar o 139 00:06:34,190 --> 00:06:39,750 enteiro de 2 a flotar e entón dicir 2,0 equivale a 2,0 é o mesmo, 140 00:06:39,750 --> 00:06:41,660 iso é verdade. 141 00:06:41,660 --> 00:06:44,180 Non esqueza que tamén pode lanzar entre ints e chars, 142 00:06:44,180 --> 00:06:46,350 ou valores ASCII. 143 00:06:46,350 --> 00:06:49,690 Chars tamén debe ser reducido a binario, que é por iso que 144 00:06:49,690 --> 00:06:51,920 pode converterse facilmente entre chars e os seus respectivos 145 00:06:51,920 --> 00:06:53,260 Valores ASCII. 146 00:06:53,260 --> 00:06:56,180 Para saber máis sobre iso, confía noso vídeo en ASCII. 147 00:06:56,180 --> 00:06:58,080 Cando toma un momento para pensar sobre como os datos están almacenados, 148 00:06:58,080 --> 00:06:59,990 comeza a facer moito sentido. 149 00:06:59,990 --> 00:07:02,790 É como a diferenza entre o vento eo vento. 150 00:07:02,790 --> 00:07:05,490 Os datos son os mesmos, pero o tipo pode cambiar o xeito no que 151 00:07:05,490 --> 00:07:06,720 interpretala lo. 152 00:07:06,720 --> 00:07:10,430 O meu nome é Jordan Jozwiak, este CS50.