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

Почему можно переопределять переменную в цикле? - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ ПРОСТЕЙШИЕ ПРОГРАММЫ НА С++ Сложение массивов http://www.cyberforum.ru/cpp-beginners/thread1188841.html
Произвести сложение двух массивов 5х3 по правилам сложения матриц. #include <iostream.h> int main() { setlocale (LC_ALL,"Russian"); const int n = 5; int a={1, 3, 4,7,4};
C++ разложение на простые множители заданного натурального числа n Составить программу, печатающую разложение на простые множители заданного натурального числа n > 0 (другими словами, требуется печатать только простые числа и произведение напечатанных чисел должно быть равно n; если n = 1, печатать ничего не надо). http://www.cyberforum.ru/cpp-beginners/thread1188801.html
C++ перевода действительного числа из одной системы счисления в другую
Пользователь вводит действительное число, систему счисления, в которой это число представлено и систему счисления, в которую будет переведено исходное число. Написать программу перевода действительного числа из одной системы счисления в другую.
Платформер, sfml, 2d игра SFML
Ребят, помогите пожалуйста сделать смерть и переход между уровнями, ну и завершение игры, а лучше всего объедините пожалуйста #include <SFML/Graphics.hpp> #include <SFML/Audio.hpp> using namespace sf; #include "iostream" #include <vector> #include <list> #include "level.hpp" #include "anim.hpp"
C++ Вывести все простые числа, не превосходящие заданное число M http://www.cyberforum.ru/cpp-beginners/thread1188797.html
Вывести все простые числа, не превосходящие заданное число M.
C++ Вывод из файла Здравствуйте написал программу ввода/вывода из файла, но когда выводит из файла на экран, почему-то последняя строчка дублируется в чем ошибка ? #define _CRT_SECURE_NO_WARNINGS #include <iostream> #include <stdlib.h> #include <fstream> using namespace std; struct mystruct { char *f_name; char *l_name; подробнее

Показать сообщение отдельно
lest_
0 / 0 / 0
Регистрация: 28.11.2013
Сообщений: 94
26.05.2014, 18:01     Почему можно переопределять переменную в цикле?
привет.

Привожу листинг из учебника. Это есть програмка для вывода меню на экран. Ненужные куски кода убрал.
C++
1
2
3
4
5
6
7
8
9
10
11
// ...
int main()
{
    // код... 
    for(;;) // бесконечный цикл
    {
        int choice = menu();
        // что-делаем...        
    } // конец бесконечного цикла           
    return 0;     
} // конец main()
Здесь есть бесконечный цикл (строки 5-9). Мне не понятна строчка 7. Здесь создаётся и инициализируется переменная choice. Инициализируется она значением, которое возвращает функция menu. Затем что-то делается в цикле (выводятся всякие сообщения на экран и т.п.). Потом цикл повторяется снова (если условие выхода не выполнено). Что происходит, когда мы повторяем цикл? Создаётся новая переменная по имени choice, а старая становится недоступной? Или он использует ту же самую переменную?

Просто если написать так:
C++
1
2
3
4
5
int main()
{
    int a = 10;
    int a = 10;
//...
то компилятор пометит строку 4 как ошибку и напишет: "error C2374: a: переопределение; множественная инициализация". В случае с циклом, вроде бы что-то аналогичное происходит, но при этом программа запускается, и компилятор ошибок не выдаёт. Но при этом не понятно, что происходит. Можно вообще переписать это как-то более ясно? Я попробовал так:
C++
1
2
3
4
5
6
7
8
9
10
11
12
// ...
int main()
{
    // код... 
    int choice;
    for(;;) // бесконечный цикл
    {
        choice = menu();
        // что-делаем...        
    } // конец бесконечного цикла           
    return 0;     
} // конец main()
то есть, определяю переменную 1 раз в строке 5. А на каждой итерации цикла просто присваиваю переменной новое значение, посчитанное функцией. Вроде програмка также работает. Но при этом в учебнике используется непонятный вариант 1.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 11:38. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru