y += (x-- ? z++ : --z); 所以这是你的问题,答案很简单......
正如我们所知,像 X-- 或 x++ 这样的东西被称为后增量或减量。因此,根据后递增或递减的规则,表达式将首先被评估,然后只有递增或递减才会生效。即先评估,然后增加或减少......
现在让我们解决您的问题:
Y+=X--?Z++:--Z....现在它包含三个部分,即左、中和右...现在考虑的重点是:“如果左部分为真则返回中间部分,否则右侧部分......并且执行总是从左侧部分开始,因为它是条件部分“
现在将语句简化为:Y+=X?Z:Z;....现在看看左边部分是否有前或后递增或递减.....如果后 ++/-- 是 der den 首先评估简化声明......登去 ++/--.....
现在左边的部分有后递减......所以让我们首先评估表达式......即
y+=1:3:3 //条件部分中的任何非零值都是真条件(即1)
所以现在我们的条件为真,它将返回中间部分,当控制进入中间部分时,只有 x 值将减少,即变为 0....
现在第二个简化语句是 Y+=Z。(\\因为条件为真并且我们得到了中间部分,编译器将跳过其余部分,即正确的部分。)
现在观察 Z 是否是 post ++/-- (或)pre ++/--) ...hahh ..它的后增量 ..所以只需首先评估简化语句 2 然后增加 Z 的值...。 IE
Y+=Z =>Y=Y+Z
=>Y=2+3 =>y=5
现在计算表达式,即 Y = 5,所以现在增加 Z 的值,即它变为 4