我在理解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。
答案 0 :(得分:5)
请注意,C ++语法意味着后缀增量的关联性是从左到右,而前缀增量的关联性是从右到左。
b = a / b++;
的行为实际上是未定义。这是因为=
不是排序点,因此在b
上同时进行读写操作。
(C也一样。)
这是i = i++;
的变体:有关更多信息,请参见Is the behaviour of i = i++ really undefined?