y + = (x--? Z ++: --z); так что это ваш вопрос, и ответ прост ................
Как мы знаем, что-то вроде X-- или x ++ называется постинкрементным или декрементным. Таким образом, в соответствии с правилами последующего увеличения или уменьшения, выражение будет сначала оценено, а затем вступит в действие только увеличение или уменьшение. сначала оценить, а затем увеличить или уменьшить .....
СЕЙЧАС разрешим ваш вопрос:
Y + = X -? Z ++: - Z .... теперь он содержит три части, то есть левую, среднюю и правую ... теперь точка зрения такова: «если левая часть верна, то она вернется средняя часть, в противном случае правая часть ... и выполнение всегда начинается с левой части, так как это условная часть "
Теперь упростим выражение как: Y + = X? Z: Z; .... Теперь посмотрим, имеет ли левая часть пре- или постинкрементное увеличение или уменьшение ..... если post ++ / - сначала der den оценить упрощенное утверждение ...... ден идти для ++ / --.....
Теперь левая часть имеет пост декремент ... так что давайте сначала оценим выражение ... т.е. 1011 *
y + = 1: 3: 3 // любое ненулевое значение в части условия является истинным условием (т. Е. 1)
так что теперь наше условие истинно, и оно вернет среднюю часть, и когда элемент управления перейдет в среднюю часть, тогда будет уменьшено только значение x, т. Е. Оно станет 0 ....
Теперь 2-е упрощенное утверждение - Y + = Z. (\\ так как условие истинно и мы получили среднюю часть, компилятор пропустит оставшуюся часть, т.е. правую часть.)
Теперь посмотрим, является ли Z post ++ / - (или) pre ++ / -) ... хахх ... его постинкремент ... так что сначала просто оцените упрощенный оператор2, а затем увеличьте значение Z. ... т.е.
Y+=Z =>Y=Y+Z
=>Y=2+3 =>y=5
Теперь выражение вычисляется, т. Е. Y = 5, поэтому теперь увеличиваем значение Z, т. Е. Оно становится 4