1 00:00:07,780 --> 00:00:10,540 [Powered by Google Translate] Precedencia é como responder á pregunta, o que a operación que temos que facer primeiro? 2 00:00:10,540 --> 00:00:14,250 A resolución de ecuacións matemáticas ou liñas de análise de código de ordenador, 3 00:00:14,250 --> 00:00:17,230 hai regras estritas de precedencia á que adheridos 4 00:00:17,230 --> 00:00:20,270 para que todos os ordenadores e as persoas poden obter o mesmo resultado. 5 00:00:20,270 --> 00:00:24,710 >> En primeiro lugar, a regra máis importante para lembrar, especialmente en probas de erro, 6 00:00:24,710 --> 00:00:27,680 é que sempre traballar a partir dos parénteses máis internos para fóra. 7 00:00:27,680 --> 00:00:31,120 Usando parénteses extra pode ser unha táctica de depuración útil, 8 00:00:31,120 --> 00:00:34,640 pero non é unha boa práctica para mazá do seu código con parénteses innecesarios. 9 00:00:34,640 --> 00:00:38,220 Aproveitar o tempo para aprender as regras básicas de operación de precedencia. 10 00:00:38,220 --> 00:00:42,450 >> A segunda regra xeral é que cando os operadores teñen priorty igual, 11 00:00:42,450 --> 00:00:44,820 simplemente resolver de esquerda a dereita. 12 00:00:44,820 --> 00:00:47,690 Ao tratar coa matemática sinxela, comezan con parénteses, 13 00:00:47,690 --> 00:00:52,110 a continuación, facer a multiplicación e división, e para rematar facer adición e subtracción. 14 00:00:52,110 --> 00:00:54,400 Multiplicación e división teñen a mesma prioridade, 15 00:00:54,400 --> 00:00:56,870 porque son esencialmente realizar a mesma operación. 16 00:00:56,870 --> 00:01:00,880 Ao final división é simplemente multiplicando polo inverso dun valor. 17 00:01:00,880 --> 00:01:04,300 Do mesmo xeito, a subtracción é simplemente engadindo un valor negativo. 18 00:01:04,300 --> 00:01:06,150 >> Imos facer un exemplo. 19 00:01:14,470 --> 00:01:18,300 Seguindo a orde de precedencia, imos comezar cos parénteses. Nove menos 1. 20 00:01:18,300 --> 00:01:23,410 Isto dará 8. Entón, podemos pasar a división e multiplicación. 21 00:01:23,410 --> 00:01:27,450 Imos resolver de esquerda a dereita. Entón, 10 dividido por dous e 5. 22 00:01:27,450 --> 00:01:31,290 Temos 5 veces 8 aquí, e que nos dará 40. 23 00:01:33,230 --> 00:01:35,410 A continuación, pasamos á seguinte orde de precedencia. 24 00:01:35,410 --> 00:01:38,730 Entón, estivemos con 3 e 40 menos 1. 25 00:01:42,400 --> 00:01:43,700 Novo só resolvendo esquerda a dereita, 26 00:01:43,700 --> 00:01:47,650 porque non hai xeito prioridade entre a adición e subtracción. 27 00:01:47,650 --> 00:01:51,510 Podemos dicir 3 e 40 é de 43, menos 1 e 42. Esa é a nosa resposta. 28 00:01:53,920 --> 00:01:56,730 >> Existen dous tipos de operadores de decremento e incremento; 29 00:01:56,730 --> 00:02:01,000 A forma de prefixo, sufixo e forma. 30 00:02:01,000 --> 00:02:06,130 A forma de sufixo, i + +, é comunmente usado en loops, 31 00:02:06,130 --> 00:02:10,500 o que significa que o valor da corrente é usada na expresión, e en seguida, é incrementado. 32 00:02:10,500 --> 00:02:14,240 Así, o valor só será diferente a próxima vez que a variable é utilizada. 33 00:02:14,240 --> 00:02:17,910 Por outra banda, o incremento ou decremento prefixo significa que o valor actual 34 00:02:17,910 --> 00:02:22,760 é incrementado ou decrementado en primeiro lugar, e, a continuación, é usado na expresión. 35 00:02:22,760 --> 00:02:25,310 >> Imos dar un exemplo co enteiro x. 36 00:02:25,310 --> 00:02:27,220 Imos define-lo igual a 5. 37 00:02:27,220 --> 00:02:36,500 Se usarmos o operador sufixo nel e dicir x + +, x nesta liña aínda é 5. 38 00:02:36,500 --> 00:02:39,230 Se fósemos para imprimir lo obteriamos o valor 5. 39 00:02:39,230 --> 00:02:42,540 Pero indo feito de x1 á fronte é igual a 6. 40 00:02:42,540 --> 00:02:48,770 Entón, aquí nesta liña x é igual a 6, e imprimiu obteriamos o valor 6. 41 00:02:48,770 --> 00:02:57,380 Agora, se foi utilizado o seu fornecedor de prefixo, + + x, x é incrementado en primeiro lugar, e, a continuación, o valor é usado. 42 00:02:57,380 --> 00:03:00,110 Polo tanto, é igual a 7 nesta liña. 43 00:03:00,110 --> 00:03:04,750 O incremento do curso de 6 a 7, e se nós imprimir lo teriamos o valor 7. 44 00:03:04,750 --> 00:03:09,160 >> A nuance último precedencia que veremos se encarga de notación de punteiro. 45 00:03:09,160 --> 00:03:15,050 O operador dereference, estrela, ten prioridade sobre operadores matemáticos básicos, 46 00:03:15,050 --> 00:03:18,550 pero non sobre o incement sufixo e operadores de decremento. 47 00:03:18,550 --> 00:03:20,690 Isto nos leva ao noso exemplo final. 48 00:03:20,690 --> 00:03:24,500 Imos dar o enteiro x e define-lo igual a 7. 49 00:03:24,500 --> 00:03:30,540 Tamén imos facer unha y punteiro e define-lo igual ao enderezo de x. 50 00:03:30,540 --> 00:03:34,920 Para que, cando y dereference debemos obter o valor 7. 51 00:03:34,920 --> 00:03:39,380 Agora, nesta liña de código, temos unha situación un tanto ambigua. 52 00:03:39,380 --> 00:03:44,310 Estamos dereferencing y primeiro, e despois aumentando o valor 7? 53 00:03:44,310 --> 00:03:48,300 Ou estamos incrementando o punteiro e logo dereferencing isto? 54 00:03:48,300 --> 00:03:52,800 En realidade, xa que o operador de incremento sufixo ten precedencia sobre 55 00:03:52,800 --> 00:03:55,370 o operador dereference, estamos intentando incrementar o punteiro y, 56 00:03:55,370 --> 00:03:59,170 que mover o punteiro do tamaño de bytes int. 57 00:03:59,170 --> 00:04:03,040 Esencialmente dar un enderezo nalgún momento totalmente distinto na memoria, 58 00:04:03,040 --> 00:04:05,010 e despois imos dereferencing-lo. 59 00:04:05,010 --> 00:04:07,350 Polo tanto, esta é a liña moito sentido. 60 00:04:07,350 --> 00:04:10,250 Se realmente quería incrementar o valor de 7, 61 00:04:10,250 --> 00:04:14,260 teriamos que poñer o operador dereference con y entre parénteses. 62 00:04:14,260 --> 00:04:17,290 Entón poderiamos incrementa-lo. 63 00:04:17,290 --> 00:04:21,089 Así, mentres non estariamos incrementando o valor de x, o segundo a última liña de código, 64 00:04:21,089 --> 00:04:23,380 na última liña de código que faría y dereference infact 65 00:04:23,380 --> 00:04:26,380 para obter o valor x e incrementar iso. 66 00:04:26,380 --> 00:04:29,540 Nós quedaría co valor de x é igual a 8. 67 00:04:31,580 --> 00:04:33,580 >> Aquí está unha rápida recapitulação das regras precedencia que falamos. 68 00:04:33,580 --> 00:04:37,210 Nós imos comezar cos parénteses máis internos e traballar fóra. 69 00:04:37,210 --> 00:04:41,210 A continuación, pasamos a operadores de sufixo, como i + + ou I -. 70 00:04:41,210 --> 00:04:45,920 Entón dereference e enderezo de operadores como estrela x ou x comercial, 71 00:04:45,920 --> 00:04:50,260 e os operadores de prefixo como + + i ou - i. 72 00:04:50,260 --> 00:04:54,920 Finalmente, facer as operacións matemáticas simples, como división, multiplicación, módulo. 73 00:04:54,920 --> 00:04:58,400 A continuación, adición, subtracción. 74 00:04:58,400 --> 00:05:02,170 Isto é precedencia. Son Jordan Jozwiak, e este é CS50. 75 00:05:04,160 --> 00:05:10,480 Nós imos dereference e usar o enderezo e - como frase que? 76 00:05:12,380 --> 00:05:13,190 Eu son feito. Okay.