2013-03-21 2 views
1

Это мой первый пост здесь и мой первый раз с C++. Я просматриваю код, который я получил из Интернета, но у меня есть вопрос об этом.Опущено для значений цикла

Он имеет цикл, например:

for(cin >> t;t--;) 

Я понимаю, что он делает, но я не могу понять, что это условие.

В соответствии с этим форматом for (init; condition; increment), t-- - это условие, но это не имеет смысла. Я думаю, что t-- является приращением, но почему это второй параметр?

Не должно быть что-то вроде: for (cin >> t; ;t--);?

ответ

2

Оператор -- является оператором «декремент и возврат». Поскольку он используется как postdecrement, он возвращает t, а затем уменьшает значение.

В C++ все, что отличается от 0 является true и наоборот, так в основном это эквивалентно

t == 0 

, конечно, все было бы иначе в случае --t, так как он будет уменьшать значение до и затем вернуть его (это закончило бы цикл одной итерацией раньше).

+0

't -' возвращает 't' и одновременно устанавливает' t = t - 1'. Вы думаете о префиксе pf. Таким образом, последним декрементом будет декремент от 1 до 0, который возвращает 1, продолжая цикл в последний раз для 't = 0'. – Wug

+0

Хммм, поэтому, когда t-- в положении условия, мы оба уменьшаем его значение и оцениваем условие? – bex91

+0

Не оценено, оно возвращается. Это числовое значение, но в C++ число действительно может быть условием. – Jack

0

for (init; condition; increment) - это только рекомендуемый способ использования для петель. Реальный путь для работы петель:

for(
    <runs once before loop>; 
    <check before every iteration, loop if true/non-zero>; 
    <run after every iteration>) 
+0

Спасибо, это очень понятный способ выразить это! – bex91

Смежные вопросы