Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.50/6: Рейтинг темы: голосов - 6, средняя оценка - 4.50
0 / 0 / 0
Регистрация: 26.02.2015
Сообщений: 19

Странная ошибка (зависимость от cout)

29.04.2015, 00:30. Показов 1187. Ответов 7
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем Доброго Времени Суток!
В процедуру единицы трансляции передаются по указателю три массива (заданные в исполняемом файле через new). Все вроде понятно и прозрачно и даже правильно работает для различных вариантов. Но что странно, когда убираешь строку
C++
1
std::cout<<" y["<<w<<"]="<<y[w];
все "летит к чертям".
Может кто сталкивался с таким? В чем может быть ошибка?

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
    void BitSet (int* y, int* y1, int* y2, int rz)
    {
        for (int k = 0; k < rz; k++){
            if (y2[k] == 1) {
                int flag, know = 0;
                for (int w = k; w < rz+k; w++){
                    y[w] = flag + y[w] + y1[know];
                    if (y[w] < 2) {flag = 0;}
                    if (y[w] == 3) {y[w] = 1;flag = 1;}
                    if (y[w] == 2) {y[w] = 0;flag = 1;}
                    know++;
                    std::cout<<" y["<<w<<"]="<<y[w];
               }
            }
        }
    }
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
29.04.2015, 00:30
Ответы с готовыми решениями:

Странная зависимость от размерности массива
Доброго времени суток! Написал программу,которая меняет первую строку и последнюю строку массива местами,в итоге получилось что она...

Cout <<endl; Что это значит? Если ничего нету в cout?
Здравствуйте ! Обьясните пожалуйста что значит cout &lt;&lt;endl; если он используется после цикла for?

Ошибка cout<<<
Не пойму в чем проблема... во втором cout&lt;&lt; ошибку выдает. Кто-то может дать объяснить почему? #include &lt;iostream&gt; using...

7
265 / 165 / 56
Регистрация: 25.02.2015
Сообщений: 435
29.04.2015, 00:49
что значит все летит к чертям? подробнее пишите что там случилось.
ну одна ошибка есть: использование неинициализированной flag. надо инициализировать, но хз, ваш это случай или нет, т.к. см. первый вопрос.
0
0 / 0 / 0
Регистрация: 26.02.2015
Сообщений: 19
29.04.2015, 00:58  [ТС]
- это если строка вывода присутствует

- это если ее нет
0
18 / 18 / 10
Регистрация: 20.04.2015
Сообщений: 108
29.04.2015, 01:04
C++
1
y[w] = flag + y[w] + y1[know]; // что сейчас находится в переменной flag?
0
265 / 165 / 56
Регистрация: 25.02.2015
Сообщений: 435
29.04.2015, 01:07
Лучший ответ Сообщение было отмечено Garptica как решение

Решение

инициализировать переменную flag пробовали? в самом начале нулем или чему она там у вас должна быть равна. наличие вызова функции (std::cout - это и есть вызов) влияет на стек а значит на значение переменной flag, если ей не задали это значение при объявлении.
1
0 / 0 / 0
Регистрация: 26.02.2015
Сообщений: 19
29.04.2015, 01:11  [ТС]
Инициализировал
C++
1
int flag = 0;
Все стало работать и без вывода cout ..., хотя какая связь была когда flag был только объявлен, но не проинициализирован и при этом был вывод каких-то данных?
Почему все работало - пока для меня загадка!
0
265 / 165 / 56
Регистрация: 25.02.2015
Сообщений: 435
29.04.2015, 01:20
переменная flag - в стеке. если ее не инициализировать, то ее значение будет зависеть от того, что было в стеке. а вот в каком месте стека она будет - это уже может зависеть от того, какой там у вас код. выравнивания там всякие начинаются и прочие низкоуровневые штуки. так вот наличие функции в коде могло приводить к тому, что эта переменная оказывалась немного в другом месте стека, в котором немного другое значение. можете попробовать вывести адрес этой переменной для случая, когда у вас в коде есть std::cout ..., и когда его нет. + еще если адреса все же одинаковые, то просто значение попробуйте вывести (в варианте, когда она не инициализирована). но это теория, может быть все не так и причина в другом. если же она верна, такой эксперимент может ничего не показать, т.к. код по выводу адресов\значений так же может влиять на стек. прям как в квантовой физике
0
18 / 18 / 10
Регистрация: 20.04.2015
Сообщений: 108
29.04.2015, 01:21
возможно при вызове cout оно выделяло себе память нулями и flag был одним из них
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
29.04.2015, 01:21
Помогаю со студенческими работами здесь

Подскажите почему после первого cout программа не останавливается для ввода строки, а выводит второй cout
Подскажите почему после первого cout программа не останавливается для ввода строки, а выводит второй cout. Это фрагмент со структурами: ...

Ошибка компиляции cout
Подскажите пожайлуста где в этой программе ошибка: //Программа расчета суммы на депозите #include&lt;iostream&gt; ...

Ошибка на cout и cin
немогу понять в чем ошибка, есть код программы, вроде бы все правильно написано, но возможно я где-то допустил ошибку, но почему-то в упор...

В чем разница std::cout и просто cout?
Ребят ,подскажите на простом языке для чайников . В чем разница std::cout и просто cout?

Разница между fwrite, cout и cout.write
Привет. Пытаюсь вывести букву 'ф' в консоль Windows 7, используя кодировку UTF-8. Для этого меняю кодовую страницу консоли на CP_UTF8,...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru