(x---1)
== (x-- -1)
потому что компилятор пытается выбрать больший маркер первым, так ---
истолкован как --
& -
Expression x-- - 1
означает первый 1
вычитается из текущего значения x
вследствие -
минус. Затем x
значение уменьшилось на 1 из-за постфиксного оператора декремента --
.
Например, в первой итерации до x = 3
, так что в то время как условие 2
(то есть 3 - 1
) после этого x
декрементируется, и до следующей итерации x = 2
.
x = 3
, i =0
;
- 1-итерации:
while(2)
, а в петле i
становится 1
x = 2
, i = 1;
- 2-итерации:
while(1)
, а в петле i
становится 2
x = 1
, i = 2;
- Теперь
x - 1
= 0
, что дает while(0)
и петли перерывов и i
не увеличивают.
Таким образом, после Регулирующее i
: 2
примечание еще один момент: i
не увеличивается, как разрыв контура, потому что i++
в то время как-блок {}
, но x
декрементируется к 0
. После цикла, если вы печатаете x
, тогда вывод будет 0
.
Мне все еще нравится оператор '->' лучше: 'while (x -> 0) {...}' – nneonneo
@nneonneo предлагает «x идет к нулю» :) Математики и авторы представления IOCCC должны любить, что , –
Я сам использовал его в коде тестирования игрушек, потому что это намного проще, чем набрать эквивалент цикла. Но, поддерживающие, вероятно, убьют меня, если я попытаюсь представить его по-настоящему :) – nneonneo