我试图弄清楚如何根据先例将以下表达式分组:
int x = 0, y = 0;
someValue ? ++x, ++y : --x, --y;
当某个值为0(false)时,评估了第二部分,并且x和y均变为-1。但是,如果某个值为1(true),那么x变为1,但y保留0,这也意味着条件表达的第二部分也被评估,但是只有 - y部分,我认为这是因为逗号运算符,但是我一生无法弄清楚这是如何实现的。任何见解都将不胜感激。
,
具有所有操作员的最低优先级,因此您的表达式被解析为
(someValue ? ++x, ++y : --x), --y;