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 >> 第二个一般的规则是,当运营商有平等的先决, 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 这将会给我们。然后我们就可以移动到除法和乘法。 21 00:01:23,410 --> 00:01:27,450 我们会解决由左到右。所以10除以2。 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 >> 有2种类型的递减和递增运算符; 29 00:01:56,730 --> 00:02:01,000 前缀形式和后缀形式。 30 00:02:01,000 --> 00:02:06,130 后缀的形式,我+ +,常用的是在for循环中, 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 >> 让我们举个例子整数x。 36 00:02:25,310 --> 00:02:27,220 我们将其设置等于5。 37 00:02:27,220 --> 00:02:36,500 如果我们使用后缀操作符,例如x + +,X在这条线仍然是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 所以,在此行x是等于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 让我们的整数x,并设置它等于7。 49 00:03:24,500 --> 00:03:30,540 我们也会让一个的指针y,它等于x的地址。 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 我们提领y首先,然后递增值7? 53 00:03:44,310 --> 00:03:48,300 我们递增指针,然后提领它? 54 00:03:48,300 --> 00:03:52,800 事实上,由于后缀递增运算符的优先级高于 55 00:03:52,800 --> 00:03:55,370 解引用运算符,我们正在试图增加的指针y, 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 然后我们提领。 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 我们必须把解引用运算符与Y在括号中。 62 00:04:14,260 --> 00:04:17,290 然后,我们可以增加它。 63 00:04:17,290 --> 00:04:21,089 因此,尽管我们不会递增x的值与第二到最后一行的代码, 64 00:04:21,089 --> 00:04:23,380 在代码的最后一行,我们来日岁月,会让你知道,解引用Ÿ 65 00:04:23,380 --> 00:04:26,380 得到x的值增加,。 66 00:04:26,380 --> 00:04:29,540 我们将留与x的值等于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 然后,我们将后缀运算符像我+ +或i - 。 70 00:04:41,210 --> 00:04:45,920 然后解引用和地址的运营商,如星X或符号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 我所做的一切。好吧。