Как обнулить переменную c
Перейти к содержимому

Как обнулить переменную c

  • автор:

Как удалить переменную в C++? [закрыт]

Закрыт. Этот вопрос необходимо уточнить или дополнить подробностями. Ответы на него в данный момент не принимаются.

Хотите улучшить этот вопрос? Добавьте больше подробностей и уточните проблему, отредактировав это сообщение.

Закрыт 1 год назад .
Мне хотелось бы чтобы я мог удалить переменную Y и объявить ее заново. У меня есть код:

#include using namespace std; int main() < int Y = 1; // Здесь переменной Y уже не должно существовать. int Y = 12; // Здесь переменной Y уже не должно существовать. string Y = "hello!"; cout

Я пробовал помещать переменную в <> , но тогда она не доступна за ее пределами. Есть ли способы реализовать такое с доступом во всей функции?

Отслеживать
2,276 2 2 золотых знака 11 11 серебряных знаков 39 39 бронзовых знаков
задан 10 мар 2023 в 7:09
47 5 5 бронзовых знаков

Так а в чем проблема с областью видимости < >? Если переменная уже не должна существовать то о каком доступе во всей функции может идти речь? А вообще зачем это? Чтобы запутать и себя и других?

10 мар 2023 в 7:13
Вы ведь уже об этом спрашивали, но не объяснили, для чего это вам нужно.
10 мар 2023 в 7:15
Если честно я сам не знаю зачем, мне просто очень очень очень интересно.
10 мар 2023 в 7:16

Может быть, вам нужен язык с динамической типизацией. Однако переиспользование переменных ни к чему хорошему не приведёт

10 мар 2023 в 7:18
Во время написания этого вопроса ни одна переменная не пострадала :)
10 мар 2023 в 7:20

1 ответ 1

Сортировка: Сброс на вариант по умолчанию

Так а в чем проблема с областью видимости < >? Если переменная уже не должна существовать то о каком доступе во всей функции может идти речь? А вообще зачем это? Чтобы запутать и себя и других?

int main() < < int Y = 1; >// Здесь переменной Y уже не должно существовать - выполнено! < int Y = 12; >// Здесь переменной Y уже не должно существовать - выполнено! string Y = "hello!"; // здесь у Y видимость до конца функции. cout

В С/С++ статическая типизация - однажды объявленная переменная не меняет свой тип. Это помогает не допускать ошибок.

Как обнулить переменную c

Для хранения данных в программе в языке C++ используются переменные . Фактически переменная представляет именнованный участок памяти. Переменная имеет тип, имя и значение. Тип определяет, какие именно данные может хранить переменная.

Перед использованием любую переменную надо определить. Синтаксис определения переменной выглядит следующим образом:

тип_переменной имя_переменной;

Именование переменных

Имя переменной последовательность алфавитных-цифровых символов и знака подчеркивания _. При этом имя переменной должно начинаться с алфавитного символа или подчеркивания.

Кроме того, в качестве имени переменной нельзя использовать ключевые слова языке C++, например, for или if . Но таких слов не так много, и по ходу освоения C++ вы соориентируетесь, какие слова являются ключевыми.

Следует отметить, что при этом не рекомендуются следующие именования:

  • имена, которые начинаются с двух подчеркиваний
  • имена, которые начинаются с подчеркивания, за которым идет заглавный алфавитный символ
  • имена в глобальной области (вне функции main), которые начинаются с подчеркивания

Дело в том, что при подобных именах повышается вероятность, что подобные названия будут конфликтовать с именами (например, именами переменных), которые генерирует компилятор или которые определены в подключаемых стандартных модулях C++. Поэтому некоторые вообще не рекомендуют начинать имя с символа подчеркивания

Определение переменной

В общем случае переменная определяется в следующем виде:

тип_переменной имя_переменной;

Например, простейшее определение переменной:

int age;

Здесь определена переменная age, которая имеет тип int . Поскольку определение переменной представляет собой инструкцию, то после него ставится точка с запятой.

Также стоит учитывать, что C++ - регистрозависимый язык, а это значит, что регистр символов имеет большое значение. То есть в следующем коде будут определяться две разные переменные:

int age; int Age;

Поэтому переменная Age не будет представлять то же самое, что и переменная age.

Также нельзя объявить больше одной переменной с одним и тем же именем, например:

int age; int age;

Подобное определение вызовет ошибку на этапе компиляции.

Инициализация

После определения переменной можно присвоить некоторое значение. Присвоение переменной начального значения называется инициализацией . В C++ есть три вида инициализации:

  • Нотация присваивания (assignment notation)
  • Функциональная нотация (functional notation)
  • Инициализация в фигурных скобках (braced initialization)

Рассмотрим все эти виды инициализаций

Нотация присваивания

Суть нотациия присваивания - с помощью оператора присваивания (знак "равно" или =) переменной передаем некоторое значение:

int age; age = 20;

Здесь в качестве значения переменной присваивается число 20. Постоянные значения любого типа, наподобие чисел, символов, строк, такие как 20, 123.456 (дробное число), "A" или "hello", называются литералами . То есть в данном случае переменной присваивается целочисленный литерал 20.

Например, определим в программе переменную и выведем ее значение на консоль:

#include int main() < int age; age = 28; std::cout можно вывести несколько значений на консоль.

После компиляции и запуска скомпилированной программы на консоль будет выведено число 28.

Age = 28

Можно сразу при определении переменной дать ей некоторое начальное значение:

#include int main() < int age = 28; std::coutint age ; // braced initialization

В данном случае переменная будет иметь значение 38.

Функциональная нотация

При функциональной нотации после названия переменной в круглых скобках указывается ее значение:

int age (38); // functional notation

В данном случае переменная будет иметь значение 38.

Во всех трех случаях присваиваемое переменной значение может представлять сложное вычисляемое выражение. Например:

int age1 ; int age2 (22 + 5); int age3 = 22 + 5;

Можно сразу инициализировать несколько переменных:

int age1 , age2 (23), age3 = 24;

В большинстве случаев все три варианта инициализации эквивалентны. Однако инициализация в фигурных скобках немного безопаснее, когда применяется сужающее преобразование. В общем случае ожидается, что переменной передается значение, которое соответствует ее типу. Если же это не так, то компилятор попытается преобразовать присваиваемое значение в тип переменной. Сужающее преобразование изменяет значение одного типа на тип с более ограниченным диапазоном значений. Таким образом, преобразование может привести к потере информации. Возьмем следующий пример:

#include int main()

Здесь переменным age1 и age2, которые представляют тип int , то есть целое число, присваивается дробное значение - 23.5 и 24.5 соответственно. Но в большинстве компиляторов, по крайней мере на момент написания данной статьи, этот код нормально скомпилируется и выполнится. Мы получим следующий вывод:

Age1 = 23 Age2 = 24

Теперь возьмем пример с инициализацией через фигурные скобки:

#include int main() < int age ; std::cout

Здесь переменной age, которая также представляет целое число, также присваивается дробное значение - 22.5. Однако теперь при компиляции многие компиляторы сообщат нам об ошибке. Например, вывод компилятора g++:

hello.cpp: In function 'int main()': hello.cpp:5:15: error: narrowing conversion of '2.25e+1' from 'double' to 'int' [-Wnarrowing] 5 | int age1 ;

Следует отметить, что некоторые компиляторы могут все таки скомпилировать данный код, однако все равно отобразят предупреждение.

Инициализация нулем

При инициализации в фигурных скобках можно опустить значение:

int counter <>;

В этом случае переменная будет инициализироваться нулем и фактически будет аналогично коду:

int counter ;

Инициализация по умолчанию

Если переменную не инициализировать, то происходит ее инициализация по умолчанию. И переменная получает некоторое значение по умолчанию, которое зависит от места, где эта переменная определена.

Если переменная, которая представляет встроенный тип (например, тип int), определена внутри функции, то она получает неопределенное значение. Если переменная встроенного типа определена вне функции, то она получает то значение по умолчанию, которое соответствует ее типу. Для числовых типов это число 0. Например:

#include int x; int main() < int y; std::cout  
X = 0 Y = 0

А в Visual Studio отсутствие значения переменной y вызовет ошибку компиляции.

Но в любом случае перед использованием переменной лучше явным образом назначать ей определенное значение, а не полагаться на значение по умолчанию.

Изменение значения

Ключевой особенностью переменных является то, что мы можем изменять их значения:

#include int main()

Консольный вывод программы:

Age1 = 22 Age2 = 23 Age3 = 38

Как обнулить переменную c

В Си новичок, подскажите пожалуйста. Есть програмка, которая должна выводить среднее арифметическое, данные вводятся с помощью цикла scanf. Вопрос, как остановить действие цикла не дав оператору scanf значение?

Вот, собственно, сам код, не судите строго, однако от объективной критики не откажусь:

/* sariph.c - прогрмма выведения среднего арифметического */ #include int main () < int i, n = 1, a, max, out, d; printf ("Введите числа: ", n); scanf ("%d", &max); do < scanf ("%d", &a); max = max + a; n = n + 1; >while (a = d); out = max / n; printf ("%d\n", out); return 0; >

Регистрация: 19.12.2008
Сообщений: 5,788

Не очень понял сам вопрос. Остановить действие цикла, то есть выйти из него, можно с помощью оператора break.
А в данном случае нужно предусмотреть условие выхода. Например, если пользователь вводит ноль.

#include int main () < int n = -1, a, max=0; double out; do < n++; scanf ("%d", &a); max = max + a; >while (a); out = (double)max / n; printf ("%lf\n", out); return 0; >

Переменную out нужно сделать вещественного типа, иначе значение будет не точным.
max нужно инициализировать нулем.

Еще можно заранее запрашивать количество слагаемых, тогда ноль тоже будет учитываться.

А можно вообще читать число как строку, а потом преобразовывать в число. Тогда выход из цикла можно осуществлять при неудачной конвертации.

Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=] _____ [Поиск] _____ [Литература по С++] ____ [Литература. Паскаль]

Как обнулить переменную?

Для перебора элементов массива удобнее всего пользоваться циклом for :

for (var i = 0; i

Если вы не собираетесь модифицировать массив, то разумно пользоваться циклом foreach :

foreach (ICr nextGen in content)

Решение с do-while . Учтите, что если не изменять количество элементов массива в этом цикле, то цикл будет бесконечным (т.к content.Count != 0 будет всегда true ).

int i = 0; do < if (i == content.Length) < i = 0; >ICr nextGen = content[i]; i++; > while(content.Count != 0); 

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *