1 00:00:07,780 --> 00:00:10,540 [Powered by Google Translate] Precendence е как да се отговори на въпроса, каква операция трябва да направя първо? 2 00:00:10,540 --> 00:00:14,250 Дали решаване на математически уравнения или разбор линии на компютърен код, 3 00:00:14,250 --> 00:00:17,230 има строги правила за предимство, за които ние се придържаме 4 00:00:17,230 --> 00:00:20,270 така че всички компютри и хората могат да получат същия резултат. 5 00:00:20,270 --> 00:00:24,710 >> Първо, най-важното правило, за да се помни, особено в бъг тестване, 6 00:00:24,710 --> 00:00:27,680 е, че ние винаги работим от най-съкровените скоби пасивно. 7 00:00:27,680 --> 00:00:31,120 Използването на допълнителни скоби може да бъде полезна тактика за отстраняване на грешки, 8 00:00:31,120 --> 00:00:34,640 но това не е добра практика на носилка кода си с ненужни скоби. 9 00:00:34,640 --> 00:00:38,220 Отделете време, за да научат основните правилата за предимство на операторите. 10 00:00:38,220 --> 00:00:42,450 >> Второто правило е, че когато операторите имат равен priorty 11 00:00:42,450 --> 00:00:44,820 просто реши от ляво на дясно. 12 00:00:44,820 --> 00:00:47,690 Когато става въпрос за проста математика да започнем със скоби, 13 00:00:47,690 --> 00:00:52,110 след това направете умножение и деление, и накрая направи събиране и изваждане. 14 00:00:52,110 --> 00:00:54,400 Умножение и деление имат еднакъв приоритет, 15 00:00:54,400 --> 00:00:56,870 защото те са по същество извършване на една и съща операция. 16 00:00:56,870 --> 00:01:00,880 След всяко разделение е просто умножаване с обратна на стойност. 17 00:01:00,880 --> 00:01:04,300 По същия начин, изваждането е просто добавяне на отрицателна стойност. 18 00:01:04,300 --> 00:01:06,150 >> Нека направим един пример. 19 00:01:14,470 --> 00:01:18,300 След по реда на старшинството, ние ще започнем с скоби. Девет минус 1. 20 00:01:18,300 --> 00:01:23,410 Това ще ни даде 8. Тогава ще можем да преминем към деление и умножение. 21 00:01:23,410 --> 00:01:27,450 Ние ще решим от ляво на дясно. Така 10 разделено на две е пет. 22 00:01:27,450 --> 00:01:31,290 Ние имаме 5 пъти 8 тук, и това ще ни даде 40. 23 00:01:33,230 --> 00:01:35,410 Тогава да преминем към следващия ред на предимство. 24 00:01:35,410 --> 00:01:38,730 Така че ние сме оставени с 3 плюс 40, минус 1. 25 00:01:42,400 --> 00:01:43,700 Отново само решаване на ляво на дясно, 26 00:01:43,700 --> 00:01:47,650 защото има еднакъв приоритет между събиране и изваждане. 27 00:01:47,650 --> 00:01:51,510 Можем да кажем, 3 плюс 40 е 43, минус 1 е 42. Това е нашият отговор. 28 00:01:53,920 --> 00:01:56,730 >> Има два вида намалявате и нарастване оператори; 29 00:01:56,730 --> 00:02:01,000 Представката форма и наставка формата. 30 00:02:01,000 --> 00:02:06,130 Наставката форма, аз + +, често се използва за електрически вериги, 31 00:02:06,130 --> 00:02:10,500 което означава, че текущата стойност се използва в израза, а след това се увеличава. 32 00:02:10,500 --> 00:02:14,240 Така стойност само ще бъде различен следващия път променлива се използва. 33 00:02:14,240 --> 00:02:17,910 От друга страна, представката печалбата или декремент означава, че текущата стойност 34 00:02:17,910 --> 00:02:22,760 се увеличава или декрементирани първи, а след това се използва в израза. 35 00:02:22,760 --> 00:02:25,310 >> Да вземем един пример с цяло число х. 36 00:02:25,310 --> 00:02:27,220 Ние ще го настроите равно на 5. 37 00:02:27,220 --> 00:02:36,500 Ако използваме наставката оператор върху него и да кажа х + +, х по тази линия все още е 5. 38 00:02:36,500 --> 00:02:39,230 Ако трябва да го разпечатате, ще получим стойност 5. 39 00:02:39,230 --> 00:02:42,540 Но върви напред x1 факта, се равнява на 6. 40 00:02:42,540 --> 00:02:48,770 Така че тук по тази линия х е равно на 6, и ако го отпечатва ще получим стойност 6. 41 00:02:48,770 --> 00:02:57,380 Сега, ако ние използвахме префикс оператор, + + X, X се увеличава, а след това стойността се използва. 42 00:02:57,380 --> 00:03:00,110 Така че по тази линия е равна на 7. 43 00:03:00,110 --> 00:03:04,750 Увеличаването на курс 6-7, и ако трябва да го разпечатате ще получим стойност 7. 44 00:03:04,750 --> 00:03:09,160 >> Последният нюанс в precendence, че ние ще търсим при сделки с показалеца нотация. 45 00:03:09,160 --> 00:03:15,050 Сочен оператор, звезда, има приоритет над основни операции по математика, 46 00:03:15,050 --> 00:03:18,550 но не повече от наставката incement и декремент оператори. 47 00:03:18,550 --> 00:03:20,690 Това ни води до окончателното нашия пример. 48 00:03:20,690 --> 00:03:24,500 Нека вземем цяло число х и равна на 7. 49 00:03:24,500 --> 00:03:30,540 Ние също така ще направи г. показалеца и го определя като равна на адреса на х. 50 00:03:30,540 --> 00:03:34,920 Така че, когато ние сочен г. ние трябва да получи стойност 7. 51 00:03:34,920 --> 00:03:39,380 Сега, в този ред на кода, имаме донякъде двусмислено положение. 52 00:03:39,380 --> 00:03:44,310 Ние dereferencing г. първата, и след това увеличаване на стойност 7? 53 00:03:44,310 --> 00:03:48,300 Или сме увеличаване на показалеца и след това го dereferencing? 54 00:03:48,300 --> 00:03:52,800 В действителност, тъй като операторът наставка увеличение има предимство пред 55 00:03:52,800 --> 00:03:55,370 сочен оператор, ние се опитвате да увеличите г. показалеца, 56 00:03:55,370 --> 00:03:59,170 , които ще се движат показалеца от размера на INT байта. 57 00:03:59,170 --> 00:04:03,040 По същество ни дава адрес в някои съвсем различна гледна точка в паметта, 58 00:04:03,040 --> 00:04:05,010 и след това ние сме го dereferencing. 59 00:04:05,010 --> 00:04:07,350 Така че това е много безсмислени линия. 60 00:04:07,350 --> 00:04:10,250 Ако ние всъщност исках да увеличите стойността на 7, 61 00:04:10,250 --> 00:04:14,260 ние ще трябва да постави и сочен с оператор г. в скоби. 62 00:04:14,260 --> 00:04:17,290 Тогава бихме могли да го увеличите. 63 00:04:17,290 --> 00:04:21,089 Така че, докато ние не ще бъде увеличаване на стойността х с втора до последния ред на кода, 64 00:04:21,089 --> 00:04:23,380 в последния ред на код надве-натри г. и сочен 65 00:04:23,380 --> 00:04:26,380 да получите х стойност и нарастване че. 66 00:04:26,380 --> 00:04:29,540 Ние ще бъдат оставени с х стойност се равнява на 8. 67 00:04:31,580 --> 00:04:33,580 >> Ето един бърз рекапитулация на precendence правила, които сме говорили за. 68 00:04:33,580 --> 00:04:37,210 Ще започнем с най-съкровените скоби и да работят навън. 69 00:04:37,210 --> 00:04:41,210 След това се премести на окончанието оператори като + + или аз - 70 00:04:41,210 --> 00:04:45,920 Тогава сочен и адрес на оператори като звезда Х или амперсанд X, 71 00:04:45,920 --> 00:04:50,260 и префикс оператори като + + I или -. 72 00:04:50,260 --> 00:04:54,920 Накрая правим прости математически операции като умножение, деление, модул. 73 00:04:54,920 --> 00:04:58,400 След събиране, изваждане. 74 00:04:58,400 --> 00:05:02,170 Това е precendence. Съм Йордан Jozwiak, и това е CS50. 75 00:05:04,160 --> 00:05:10,480 Ние ще сочен и използвате адреса и - как го правиш фраза, която 76 00:05:12,380 --> 00:05:13,190 Свърша. Добре.