Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
ыфырф1992
25 / 25 / 12
Регистрация: 08.04.2012
Сообщений: 199
#1

Почему переменной присваивается произвольное значение("мусор")? - C++

21.04.2014, 02:35. Просмотров 791. Ответов 20
Метки нет (Все метки)

Мой черновой вариант кода. Он очень черновой так что многое не суть важно, но переменной х я присваиваю значение 0. Если после приглашения ввести набор чисел, мы введем что вроде 11111111111111111111111111111111111111111111111111111, то после нажатие enter х получает произвольное значение. Вопрос почему? Проблема решается перестановкой объявления х. Но я хочу понять почему так происходит.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
#include<iostream>
#include<clocale>
using std::cout;using std::endl;using std::cin;
int main() {
    std::setlocale(LC_ALL, "Russian_Russia.1251");char z='1';int x=0;
    do {
    char str[25]={0};
    cout<<"Введите набор чисел, буквы из ряда чисел будут убраны автоматически, нельзя вводить ряд из одних букв или ряд длинее 20 символов"<<endl;
    cin>>str;
    for(int i=0;i<25;i++){ 
        if (str[20]!='\0'){cout<<"Ряд слишком линный пожалуста Введите более короткий ряд"<<endl;cin.ignore(255, '\n');break;}
        if (!(str[i]>47 && str[i]<58)&& str[i]!='\0'){
            for (int p=i;p<22;p++){
                str[p]=str[p+1];
            }
        i--;} 
    }
    if (x>=2) {
        cout<<"Если хотите окончить нажмите 0"<<endl;
        z=cin.get();
    }
    for(int i=0;i<25 && str[i]!='\0';i++){cout<<str[i]<<endl;}
    }
    while(z='0');
    system("pause");
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
21.04.2014, 02:35     Почему переменной присваивается произвольное значение("мусор")?
Посмотрите здесь:

Подскажите почему может появляться ошибка: "неразрешенный внешний символ "_SDL_..."" C++
C++ Вычищает ли "мусор" команда delete
Аналог рекурсивной функции, отображающей строку в обратном порядке, выводит "мусор" C++
C++ Как "выдрать" значение переменной из цикла
Выводит "мусор" при считывании файла C++
C++ Почему не работает "system("pause")"?
Подскажите, почему значению функции присваивается true? Что сделать чтобы передавалось значение? C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
21.04.2014, 22:45     Почему переменной присваивается произвольное значение("мусор")?
Еще ссылки по теме:

Почему вместо обратного слеша "\" выводит "¥" C++
C++ Индекс элемента массива, для которого значение функции - минимально. "Мусор в выводе"
Значение типа "void" нельзя использовать для инициализации сущности типа "int" C++
Почему, при попытке "взять" адрес переменной,компилятор ее не положит на регистр? C++
Не присваивается значение переменной C++

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

Или воспользуйтесь поиском по форуму:
ыфырф1992
25 / 25 / 12
Регистрация: 08.04.2012
Сообщений: 199
21.04.2014, 22:45  [ТС]     Почему переменной присваивается произвольное значение("мусор")? #21
Цитата Сообщение от IrineK Посмотреть сообщение
Посмотрите в направлении "Дизассемблирование кода"
я не знаю ассемблер и у меня остались о нем очень плохие воспоминания, да и хвататься за все сразу не стоит.
Цитата Сообщение от IrineK Посмотреть сообщение
Организация памяти процесса
нашел море статей, на хабре неплохая, сейчас ищу какую нибудь книгу по этой теме что бы почитать более углубленно.
Цитата Сообщение от IrineK Посмотреть сообщение
P.S. int - по всяком случае в VS - 4-байтный.
я это понимаю просто мне не сруки было рисовать стек на 4 байтный integer.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Yandex
Объявления
21.04.2014, 22:45     Почему переменной присваивается произвольное значение("мусор")?
Ответ Создать тему
Опции темы

Текущее время: 18:44. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru