Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Общие вопросы > Обработка тела цикла дебагерром


Автор: FiMa1 19.4.2007, 15:48
Привет всем!

Вопросик ведом исключительно любопытством... Есть два варианта оформления цикла for (см. ниже), в первом варианте, после получения переменной j значения 3, дебаггер заходит в тело цикла for по j. Ничего, разумеется не выводится на экран, но почему физически я вижу вход дебаггера в тело для этого for, ведь j уже НЕ меньше трёх...?

Во втором случае, при использовании фигурных скобок, этого не происходит...

IDE VS. NET 2003.

Код

#include <iostream>
using namespace std;

int main(int argc, _TCHAR* argv[])
{
    for( int i=0; i<3; i++ )
        for( int j=0; j<3; j++ )
            cout << i << " " << j << " ";

    cout << endl;

    for( int i=0; i<3; i++ )
    {
        for( int j=0; j<3; j++ )
            cout << i << " " << j << " ";
    }
    
    return 0;
}

Автор: ama_kid 19.4.2007, 16:12
А причем здесь скобки? Ты попробуй поставит скобку после точки c запятой- у тебя тоже будет "входить в тело цикла"  smile ... На самом деле  дебаггер не заходит в тело цикла, а помещает указатель на ret из тела цикла по i , который в первом случае -  находится за точкой с запятой, а во втором - явно указано закрывающейся скобкой...

Автор: JackYF 19.4.2007, 16:13
FiMa1, код абсолютно равнозначен. Компилятор на основе этих кодов должен сгенерировать идентичный бинарный код.
Что там с дебаггером VS 2003, это его заморочки smile

Автор: betal 19.4.2007, 17:09
Цитата(FiMa1 @  19.4.2007,  15:48 Найти цитируемый пост)
#include <iostream>
using namespace std;
int main(int argc, _TCHAR* argv[])
{
    for( int i=0; i<3; i++ )
        for( int j=0; j<3; j++ )
            cout << i << " " << j << " ";
    cout << endl;
    for( int i=0; i<3; i++ )
    {
        for( int j=0; j<3; j++ )
            cout << i << " " << j << " ";
    }
    
    return 0;
}

 smile  smile  smile 
Действительно при чем ? Я разници вообще не вижу...

Автор: FiMa1 20.4.2007, 10:53
Цитата(JackYF @ 19.4.2007,  16:13)
FiMa1, код абсолютно равнозначен. Компилятор на основе этих кодов должен сгенерировать идентичный бинарный код.
Что там с дебаггером VS 2003, это его заморочки smile

Господа, вы просто не внимательно читали пост. Я пишу, что "Ничего, разумеется не выводится на экран", соответственно понимаю, что разницы в приденных вариантах нет никакой. Интересовало исключительно поведение дебаггера, которое я наблюдал на экране.
А вот ama_kid большое спасибо!!!

Добавлено через 41 секунду
Топик закрыт, всем отликнувшимся поклон!

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)