Ответ на ваш вопрос заключается в том, что в C / C ++ int y = x ? (x++?x:-1) : 1;
мы попадем в две точки последовательности в ?
.Любые операции обновления переменной с в точке последовательности будут эффективны после ее завершения.Итак, давайте посмотрим на наш пример.
Первая точка последовательности - первая ?
слева.
x=-1; (Actual Value)
x=-1; (Value used in expression)
y=-1?(x++?x:-1):1;
Вторая точка последовательности - вторая ?
слева.Как упомянуто выше, операции обновления действуют после последовательности, поэтому, даже если x++
там, значение, используемое в этой последовательности, равно -1
, и обновленное значение будет использоваться в следующем.
x=0; (Actual Value)
x=0; (Value used in expression)
y=x;
y=0;
Надеюсь, теперь это имеет смысл.