int b = 0,a = 1; b = ++ a + ++ a; b的价值是多少?它的计算是什么?

时间:2013-08-06 11:01:53

标签: c prefix

int main()
{
    int b=0,a=1;//initialize a and b
    b=++a + ++a;// calculate assign the value of b
    print f("%d",b);
    return 0;
}
  1. b的价值是多少?
  2. 它的计算是什么?

2 个答案:

答案 0 :(得分:2)

答案 1 :(得分:0)

在表达式b=++a + ++a;

中,似乎有一个序列点并不重要

也就是说,在++a的任何一种情况下,首先评估第一个++a还是第二个a被评估,然后递增两次,然后+运算符生效,所以最终的等式是b = 2 + 3;b = 3 + 2,因此b = 5。

当我回到家时,我会尝试使用我的C编译器。

Blastfurnace关于在+运算符生效之前进行评估的评论是正确的,现在我考虑一下,显而易见。

也就是说,+的优先级低于++a。可以认为,这种说法并不含糊,因为将评价顺序(R到L或L,R,两者都相对于优先顺序)转换成相同的答案。

没有人会声称这是一个编写良好的代码,对于讨论的几个问题感兴趣,但不是应该认可的东西。

相关问题