Цитата(Метценгерштейн @ Feb 20 2013, 19:56)

а как оно- volatile связано тут? где здесь переменная, кот. может внезапно поменяться?
С volatile связано очень сильно.
Во-первых, без этого компилятор может сообразить что результатом этого цикла будет i=step.
Во-вторых без этого компилятор может один раз использовать регистр для переменной i, а другой - ячейку памяти. Время доступа разное, так что ВНЕЗАПНО один и тот-же код может дать разную задержку. Такие функции зачастую инлайнятся, или вообще определяются с помощью дефайнов. И без volatile вас ждет полная неопределенность.