2013-08-31 60 views
-7

在这里我得到了o/p为'1',但我的期望是'100'。为什么这样?请说明一下。谢谢!从左到右或倒数的算术表达式评估?

int main() 
    { 
      cout << 100/10/10 << endl; 
    } 
+1

如果您不是100%确定,请使用括号 - 因为其他读者的代码在查看代码时可能具有相同的“问题”。 –

+0

它不是真的关于“评估顺序”,而是“结合性”(它给出了操作的评估顺序,而不是它们的操作数)。 –

回答

4

对于具有相同优先级的算术运算符,从左到右进行评估。这就是为什么你得到1 -

  1. 首先,100除以10,结果10
  2. 结果由10又分为,造成1

看看这个Precedence Table

0

当运营商具有相同的优先级时,它们从左到右进行评估。

这是基本的代数。

+1

不确定“基本代数”......考虑假设的求幂运算符'**':'a ** b ** c'应该是'a **(b ** c)',即右关联。 –

0

从TCPPL第4版的257页

元运算符和赋值运算符是右结合;所有 其他人都是左联合的。例如,a = b = c意味着a =(b = c)而 a + b + c表示(a + b)+ c