递增和递减c ++和java的区别

时间:2017-11-15 10:30:30

标签: c++

这里我想简要解释一下答案(24)。但我在java中尝试了这段代码。我在java中得到了答案23。

#include <iostream>

using namespace std;

int main()
{

    int a=10,b=2,c=0;
    c=(++a + ++a);
    cout <<c<<endl;
    return 0;
     //Here how to get answer 24

}

1 个答案:

答案 0 :(得分:1)

c=(++a + ++a);

在C ++中,它是未定义的行为。我不知道java中该代码的行为。

C ++ 03 5表达式[expr]:
第4段:

  

....
  在前一个和下一个序列点之间,标量对象的表达式评估最多只能修改一次存储值。此外,只能访问先前值以确定要存储的值。对于完整的子表达式的每个允许排序,应满足本段的要求   表达; 否则行为未定义

C ++11§1.9/ 14说:

  

与a相关的每个值计算和副作用   full-expression在每个值计算和side之前排序   与要评估的下一个完整表达相关联的效果。

C ++ 17 中,未指定行为。