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

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

Восстановить пароль Регистрация
 
 
ыфырф1992
25 / 25 / 12
Регистрация: 08.04.2012
Сообщений: 199
21.04.2014, 02:35     Почему переменной присваивается произвольное значение("мусор")? #1
Мой черновой вариант кода. Он очень черновой так что многое не суть важно, но переменной х я присваиваю значение 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++ Error: значение типа "const char" нельзя присвоить сущности типа "double"
Аналог рекурсивной функции, отображающей строку в обратном порядке, выводит "мусор" C++
C++ Как "выдрать" значение переменной из цикла
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
21.04.2014, 22:45     Почему переменной присваивается произвольное значение("мусор")?
Еще ссылки по теме:

Выводит "мусор" при считывании файла C++
C++ Почему не работает "system("pause")"?
Подскажите, почему значению функции присваивается true? Что сделать чтобы передавалось значение? 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     Почему переменной присваивается произвольное значение("мусор")?
Ответ Создать тему
Опции темы

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