C++运算符优先级问题, (a3=sz[_searchIndex] +1&7) == (b3=sz[_searchIndex = ++_searchIndex == 8 ? 0 : _searchIndex])

int sz[8] = {0, 1, 2, 3, 4};
int a3;
int b3;
int _searchIndex = 0;
bool a6 = (a3=sz[_searchIndex] +1&7) == (b3=sz[_searchIndex = ++_searchIndex == 8 ? 0 : _searchIndex]);
为什么结果为a6=false,测试中a3=2,b3=1;
"=="执行顺序不应该是先左后右嘛?为什么这个是限制性==后侧得。

a3应该是1 b3也应该是1 a6也是1,本地运行一下结果无误啊
能描述的清楚一点吗

这个结果无法确定
因为++_searchIndex 是副作用表达式
这是c语言的未定义行为
所以不能保证 (a3=sz[_searchIndex] +1&7) 和 (b3=sz[_searchIndex = ++_searchIndex == 8 ? 0 : _searchIndex])求值顺序
也不能保证sz[_searchIndex] +1&7) 中 _searchIndex 是多少

你可以换几个不同的编译器,结果不同