我刚刚在我的c ++课程中进行了测试,其中一个问题我得错了:
请看以下声明。 而(x ++ <10) 首先使用哪个运算符?
我的答案是++然而,测试告诉我它实际上是&lt;。有人可以解释为什么会这样吗?
答案 0 :(得分:4)
override func touchesBegan(touches: Set<NSObject>, withEvent event: UIEvent) {
var touch: UITouch = touches.first as! UITouch
var location = touch.locationInNode(self)
var node = self.nodeAtPoint(location)
if node.name == "unlockleveltwobuttonNow" {
callthis()
for product in list {
var prodID = product.productIdentifier
if(prodID == "unlockLevelTwo") {
p = product
buyProduct()
break;
}
}
runAction(menuAudioPlayer)
}
的优先级高于operator++
。
因此,在这种情况下,首先调用operator<
,然后返回原始值(在增量之前),这将用于比较。
答案 1 :(得分:2)
我怀疑这是因为x++
是一个后增量。所以你可以说它首先将x与10进行比较,然后将其中一个添加到x。
如果它是++x
那么首先要完成添加。
我认为这是一个棘手的问题,因为就运算符优先级而言,++
的优先级高于<
。
答案 2 :(得分:2)
当x
属于具有用户定义的后缀operator++
的类型时,必须首先评估++
。
对于内置类型的x
,我不确定是否可以说明排序。
答案 3 :(得分:0)
这是优先顺序。
1 Parenthesis () []
2 Structure Access . ->
3 Unary ! ++ -- * &
4 Multiply,Divide,Modulus * / %
5 Add,Subtract + -
6 Shift Right,Left >> <<
7 Greater,Less than etc > < => <=
8 Equal , Not Equal == !=
9 Bitwise AND &
10 Bitwise OR |
11 Logical AND &&
12 Logical OR ||
13 Conditional Expression ? :
14 Assignment = += -= etc
15 comma .