Не ответ, а примечание: иногда вспоминая, что for (; x;) совпадает с while (x) (другими словами, просто сказать «while», когда я проверяю центральное выражение условного if), помогает мне анализ противно для заявлений ...
Например, становится очевидным, что выражение центра всегда вычисляется в начале первого прохода цикла, что вы можете забыть, но совершенно недвусмысленно, если посмотреть на него в формате while ().
Иногда полезно вспомнить, что
a;
while(b) {
...
c;
}
это почти (см. Комментарии) так же, как
for(a;b;c) {
...
}
Я знаю, что это очевидно, но активное понимание этих отношений действительно помогает вам быстро переходить от одной формы к другой, чтобы прояснить запутанный код.