我试图弄清楚如何根据优先级对以下表达式进行分组:
int x = 0, y = 0;
someValue ? ++x, ++y : --x, --y;
当someValue为0(false)时,将评估第二部分,并且x和y都变为-1。但是,如果someValue为1(true),则某种方式x变为1但y仍为0,这意味着条件表达式的第二部分也被计算,但只有-y部分,我假设是因为逗号运算符,但我不能为我的生活弄清楚这是如何实现的。任何见解都将不胜感激。
答案 0 :(得分:3)
,
具有所有运算符的最低优先级,因此表达式被解析为
(someValue ? ++x, ++y : --x), --y;