递增顺序

时间:2019-03-21 15:43:23

标签: c++ increment

我在理解C ++中的递增顺序时遇到问题。

我知道增量是一元运算符,因此它们是从右到左用括号括起来的。

我的问题是,我们什么时候增加电话号码?

这是一个简单的代码:

#include <iostream>
using namespace std;

int main()
{
  int a1;
  int a(12),b(3);

  a1=7+10%3-5;
  b=a/b++;

  cout<<a1<<"\t"<<b<<endl;
  return 0; 
}

在这里我得到a = 3正确,但b = 5,我认为是3,因为我们从右边开始并加1,然后12/4给出3。

1 个答案:

答案 0 :(得分:5)

请注意,C ++语法意味着后缀增量的关联性是从左到右,而前缀增量的关联性是从右到左。

b = a / b++;的行为实际上是未定义。这是因为=不是排序点,因此在b上同时进行读写操作。

(C也一样。)

这是i = i++;的变体:有关更多信息,请参见Is the behaviour of i = i++ really undefined?