[Powered by Google Translate] Precendence是我们如何回答这个问题,什么样的操作,我们应该首先做什么? 无论是解决数学方程或解析行计算机代码, 有严格的规定,这是我们坚持的优先 让所有的计算机,人们可以得到相同的结果。 首先,最重要的规则要记住,尤其是在错误的测试, 是我们始终从最里面的括号内向外。 使用额外的括号可以是一个有用的调试策略, 但它不是好的做法弄乱你的代码不需要括号。 花时间学习基本的运算符优先级规则。 第二个一般的规则是,当运营商有平等的先决, 你简单地解决由左到右。 简单的数学处理时,我们开始用括号括住 然后做乘法和除法,最后做加法和减法。 乘法和除法具有相同的优先级, 因为它们本质上执行相同的操作。 毕竟师是简单的倒数乘以一个值。 同样,减法是简单地增加一个负值。 让我们做一个实例。 的优先顺序之后,我们将开始使用括号。九减1。 这将会给我们。然后我们就可以移动到除法和乘法。 我们会解决由左到右。所以10除以2。 我们这里有5次8,而这将会给我们40。 然后,移动到下一个优先顺序。 因此,我们只剩下3加40减1。 同样只是解决左到右, 因为有相等的优先级之间的加法和减法。 我们可以说3加40是43,再减去1是42。这就是我们的答案。 有2种类型的递减和递增运算符; 前缀形式和后缀形式。 后缀的形式,我+ +,常用的是在for循环中, 这意味着,在表达式中使用的电流值,然后它被递增。 因此,值将只不同的下一个使用该变量的时候。 另一方面,前缀增量或减量装置的电流值 递增或递减第一,然后它被用在表达式。 让我们举个例子整数x。 我们将其设置等于5。 如果我们使用后缀操作符,例如x + +,X在这条线仍然是5。 如果我们将其打印出来,我们会得到的值为5。 ,但前进X1其实等于6。 所以,在此行x是等于6,如果我们打印出来,我们将获得价值6。 现在,如果我们使用前缀运算符,+ +的x,x进行递增,然后再使用该值。 因此,它是在这条线等于7。 递增6日至7当然,如果我们将其打印出来,我们将获得价值7。 与指针符号的最后一个的细微差别precendence,我们将看看。 解引用运算符,星型,在基本的数学运算符的优先级, 但不超过的后缀incement和递减运算符。 这导致我们最后一个例子。 让我们的整数x,并设置它等于7。 我们也会让一个的指针y,它等于x的地址。 所以,当我们解引用Ÿ我们应该得到的值7。 在这行代码中,我们有一个有点含糊不清的情况。 我们提领y首先,然后递增值7? 我们递增指针,然后提领它? 事实上,由于后缀递增运算符的优先级高于 解引用运算符,我们正在试图增加的指针y, 这将指针移动的int字节的大小。 从本质上给了我们一个在一些完全不同的点在内存中的地址, 然后我们提领。 因此,这是没有意义的线。 如果我们确实想增加值7, 我们必须把解引用运算符与Y在括号中。 然后,我们可以增加它。 因此,尽管我们不会递增x的值与第二到最后一行的代码, 在代码的最后一行,我们来日岁月,会让你知道,解引用Ÿ 得到x的值增加,。 我们将留与x的值等于8。 下面是一个简单的回顾一下,我们已经讨论过的precendence规则。 我们先从最里面的括号内向外的工作。 然后,我们将后缀运算符像我+ +或i - 。 然后解引用和地址的运营商,如星X或符号x, 前缀运算符,如+ + i或 - 我。 最后,我们做了简单的数学运算,如乘,除,取模。 然后加法,减法。 这是precendence。我佐敦Jozwiak,这是CS50。 我们将取消引用和使用的地址 - 你怎么短语? 我所做的一切。好吧。