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

Начальное значение для переменных-перечислений - C++

Восстановить пароль Регистрация
 
Пёс
 Аватар для Пёс
228 / 76 / 4
Регистрация: 03.02.2013
Сообщений: 311
09.02.2013, 21:59     Начальное значение для переменных-перечислений #1
C++
1
enum {purchasing, selling, noAction} action;
При таком объявлении, начальное значение action в 10 из 10 запусков - purchasing. Суть вопроса: Это закономерное поведение или всего лишь воля судьбы, а на самом деле Action - UB?

И разрешена ли такая инициализация?

C++
1
enum {purchasing, selling, noAction} action = noAction;
Добавлено через 1 час 44 минуты
Эксперты С++, Вы где?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.02.2013, 21:59     Начальное значение для переменных-перечислений
Посмотрите здесь:

Вопрос о разумном использовании структур\перечислений\объединений C++
C++ Значение переменных
C++ Значение переменных
C++ Значение переменных
Значение переменных C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
DU
1477 / 1053 / 45
Регистрация: 05.12.2011
Сообщений: 2,279
09.02.2013, 22:14     Начальное значение для переменных-перечислений #2
если вопрос академический - то я не знаю ответов
если практический, то так хитро и туманно лучше не писать. раз возникают вопросы - то это плохой код.
Пёс
 Аватар для Пёс
228 / 76 / 4
Регистрация: 03.02.2013
Сообщений: 311
10.02.2013, 20:06  [ТС]     Начальное значение для переменных-перечислений #3
Ребят, ну что никто не знает ?
NoMasters
Псевдослучайный
1737 / 1080 / 69
Регистрация: 13.09.2011
Сообщений: 3,094
10.02.2013, 20:10     Начальное значение для переменных-перечислений #4
Если переменная глобальная, то по умолчанию она инициализируется нулём, у emun первый индекс по умолчанию тоже ноль.
Croessmah
Модератор
Эксперт С++
 Аватар для Croessmah
11845 / 6824 / 771
Регистрация: 27.09.2012
Сообщений: 16,919
Записей в блоге: 2
Завершенные тесты: 1
10.02.2013, 20:13     Начальное значение для переменных-перечислений #5
Цитата Сообщение от Пёс Посмотреть сообщение
При таком объявлении, начальное значение action в 10 из 10 запусков - purchasing. Суть вопроса: Это закономерное поведение или всего лишь воля судьбы, а на самом деле Action - UB?
глобальные переменные инициализируются нулем, так что action будет 0, даже если у Вас будет перечисление начинаться не с нуля

Добавлено через 1 минуту
Цитата Сообщение от Пёс Посмотреть сообщение
И разрешена ли такая инициализация?
C++
1
enum {purchasing, selling, noAction} action = noAction;
можно и так.

а вот так что попадется в памяти, то и будет.
C++
1
2
3
4
5
#include <iostream>
int main(){
    enum {purchasing=43, selling, noAction} action;
    std::cout<<action<<std::endl;
}
Yandex
Объявления
10.02.2013, 20:13     Начальное значение для переменных-перечислений
Ответ Создать тему
Опции темы

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