Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.69/86: Рейтинг темы: голосов - 86, средняя оценка - 4.69
Временно недоступен
 Аватар для #pragma
957 / 228 / 14
Регистрация: 12.04.2009
Сообщений: 926

Enum и типы данных. Как задать тип значений явно, и какой тип будет при переполнении?

06.08.2010, 20:13. Показов 17598. Ответов 25
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Пытаюсь сделать функцию с передачей нескольких параметров,используя битовые операции. В качестве параметров думаю использовать не стандартные define-ы,а перечисление enum.
Можно ли задать тип значений для членов enum явно(мне в конкретном случае нужен unsigned int)?
Что будет при битовой операции,если значение результата выходит за пределы типа (даже не уверен,возможно ли,но вроде бы да)?
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
06.08.2010, 20:13
Ответы с готовыми решениями:

Какой тип данных использует VBA, если тип явно не объявлен
Какой тип данных использует VBA, если тип явно не объявлен

Как понять, какое значение будет возвращено на выходе, как явно задать тип возвращаемого значения
Здравствуйте. Недавно начал изучать язык VBA. Не могу уяснить логику работы с функциями. До этого изучал MQL. Там структура функции...

Как избавиться от необходимости явно указывать тип в enum?
Как сделать, чтобы для перечислений не нужно было явно указывать тип int? switch (direction) { case...

25
Evg
Эксперт CАвтор FAQ
 Аватар для Evg
21281 / 8305 / 637
Регистрация: 30.03.2009
Сообщений: 22,660
Записей в блоге: 30
07.08.2010, 00:14
Студворк — интернет-сервис помощи студентам
В любом случае значение NULL связывать с пустой маской - неправильно. Потому как одно - указатель в память, а другое - целое число (набор битов)
1
Эксперт С++
 Аватар для Mr.X
3225 / 1752 / 436
Регистрация: 03.05.2010
Сообщений: 3,867
07.08.2010, 00:14
Цитата Сообщение от fasked Посмотреть сообщение
разве NULL это не 0, то есть
#define NULL 0
во всяком случае в Си++.
В C++ Страуструп вообще не рекомендует применять эту сишную примочку (злосчастный макрос NULL, как он его называет), а везде использовать нормальный человеческий 0.
1
Временно недоступен
 Аватар для #pragma
957 / 228 / 14
Регистрация: 12.04.2009
Сообщений: 926
07.08.2010, 00:16  [ТС]
Цитата Сообщение от Evg Посмотреть сообщение
В любом случае значение NULL связывать с пустой маской - неправильно. Потому как одно - указатель в память, а другое - целое число (набор битов)
Постараюсь больше не забывать
0
Evg
Эксперт CАвтор FAQ
 Аватар для Evg
21281 / 8305 / 637
Регистрация: 30.03.2009
Сообщений: 22,660
Записей в блоге: 30
07.08.2010, 00:19
Цитата Сообщение от Mr.X Посмотреть сообщение
В C++ Страуструп вообще не рекомендует применять эту сишную примочку (злосчастный макрос NULL, как он его называет).
А что же он рекомендует применять? Я понимаю, если бы хотя бы класс std::string был сделан по-человечески, так ведь в нём нет нормального аналога NULL'а.
0
Эксперт С++
 Аватар для fasked
5045 / 2624 / 241
Регистрация: 07.10.2009
Сообщений: 4,310
Записей в блоге: 5
07.08.2010, 00:30
Лучший ответ Сообщение было отмечено как решение

Решение

Цитата Сообщение от #pragma Посмотреть сообщение
Это вроде может зависеть от реализации,то есть может быть
C++
1
#define NULL (void *)0
вот как раз таки на Си++ так делать нельзя, из указателя типа void запрещено неявное преобразование в указатели любых других типов.
я потому и заинтересовался, что везде NULL в принципе объявляется обычным целочисленным значением.
плюс к тому же вот слова Страуструпа:
In C++, the definition of NULL is 0, so there is only an aesthetic difference. I prefer to avoid macros, so I use 0. Another problem with NULL is that people sometimes mistakenly believe that it is different from 0 and/or not an integer. In pre-standard code, NULL was/is sometimes defined to something unsuitable and therefore had/has to be avoided. That's less common these days.
Может в Си NULL и бывает разный, но в Си++ по стандарту всегда ноль.

я не спорю с тем, что NULL нельзя присваивать целочисленным значениям. но это возможно.

Добавлено через 3 минуты
Цитата Сообщение от Evg Посмотреть сообщение
А что же он рекомендует применять? Я понимаю, если бы хотя бы класс std::string был сделан по-человечески, так ведь в нём нет нормального аналога NULL'а.
в новом стандарте появился nullptr - специально для указателей.
If you have to name the null pointer, call it nullptr; that's what it's going to be called in C++0x. Then, "nullptr" will be a keyword.
3
Evg
Эксперт CАвтор FAQ
 Аватар для Evg
21281 / 8305 / 637
Регистрация: 30.03.2009
Сообщений: 22,660
Записей в блоге: 30
07.08.2010, 09:58
Цитата Сообщение от fasked Посмотреть сообщение
Может в Си NULL и бывает разный, но в Си++ по стандарту всегда ноль.
Возможно. Я просто про Си++ мало что знаю и всё как-то подсознательно в контексте языка си пишу

Цитата Сообщение от fasked Посмотреть сообщение
в новом стандарте появился nullptr - специально для указателей
А в старом стандарте-то что было? Если кто-то не рекомендует чем-то пользоваться, то как минимум для приличия надо порекомендовать что-то взамен

Добавлено через 10 минут
Цитата Сообщение от fasked Посмотреть сообщение
я не спорю с тем, что NULL нельзя присваивать целочисленным значениям. но это возможно
Посмотрел на код из-под g++. Там в качестве NULL везде задефайнено значение __null. Даже при опциях типа -ansi (т.е. "старый" стандарт). Я правильно понимаю, что __null изначально было в Си++ и предполагало некое значение, соотвествующее "пустому" значению? Или всё-таки оно означает некоторое "несуществующее" значение? Мне бы было интересно узнать этот момент поподробнее

Исходя из этого можно будет понять правильный ответ на вопрос из поста #7 и прикинуть, что там с аналогом NULL в std::string. По последнему вопросу особенно интересуем вариант состыковки кодов на Си и Си++: выработка NULL на Си и присваивание значения в string, далее передача string'а транзитом через коды Си++, а затем опять передача в Си. Дойдёт значение NULL или нет?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
07.08.2010, 09:58

Какой тип (типы) следует указать при написании переменной,которая будет принимать заданные значения?
Какой тип (типы) следует указать при написании переменной,которая будет принимать заданные значения? `+`, -15

Какой тип данных надо задать для ввода произвольной функции F (x) с клавиатуры
Доброго времени суток! Немогу понять какой тип данных надо задать для ввода произвольной функции F(x) с клавиатуры, используется судя по...

Типы данных: есть ли универсальный тип, который может заменить все типы данных в Си?
Добрый вечер! Был бы очень признателен, если бы Вы помогли бы мне понять нижеследующие вопросы: 1. Можете ли на понятным для...

Добавить свой тип (Enum) в тип переменной My.Settings
Доброй ночи! В принципе название темы говорит само за себя. Нужен параметр приложения с моим типом данных. В данном случае это enum. Но...

Не могу явно преобразовать тип данных. Hibernate
Здравствуйте, уважаемые форумчане. Подскажите пожалуйста с данным вопросом http://***.ru/topics/37456?page=1#190148. Спасибо.


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

Или воспользуйтесь поиском по форуму:
26
Ответ Создать тему
Новые блоги и статьи
Море в объективе
kumehtar 06.07.2026
Хотел написать много проникновенных слов, но передумал. Оно само - говорит. Кто слышит тот слышит.
Оказывается, Unreal Engine позволяет качество на порядки выше, чем было в Lineedge
Etyuhibosecyu 05.07.2026
Жаль, конечно, что я не узнал об этом, пока Lineedge существовала, а то бы Noname2331 написал, что волки превращаются в пиксельную кашу, а я бы его попросил скачать какую-нибудь бриллиантовую или Pro. . .
Doom для терминала без стрельбы и монстров. 3D Raycasting на ascii.
dcc0 05.07.2026
Попросил нейронную сеть deepai. org написать рейкастинг 3D с библиотекой ncurses для Linux. Чтобы можно было ходить на стрелочки. Чтобы стены были отрисованы символами. Справилась. Первый вариант. . .
Установка статуса документа по условию
Maks 05.07.2026
Алгоритм из решения ниже реализован на нетиповом документе "НарядПутевка" разработанного в КА2. Задача: в табличной части "Материалы" документа при записи автоматически устанавливать статус. . .
Сезонность и суточность закисления почв
anaschu 04.07.2026
200 часов это все равно моловато. Есть ситуации, но нестандартные, когда смена происходит за 5 лет. Но обычно это 50 лет и более. Наверное, закисление почвы происходит сезонно в средней. . .
В чем ценность человеческого опыта в глобальном смысле?
kumehtar 03.07.2026
Возможно, ценность человека не в том, что он однажды достигает мудрости, а в том, что он становится носителем карты пути. Он знает не только истину, но и последовательность внутренних изменений,. . .
интеграция AnyLogic с самописным REST API и переход на Odoo
anaschu 03.07.2026
Успешная интеграция AnyLogic с самописным REST API и переход на промышленную Odoo WMS Сегодня проделал огромный путь от простой симуляции физических процессов до построения полноценной. . .
Поиск всех путей на ориентированном графе. Linux
dcc0 02.07.2026
Переработка старого кода из моей статьи. Через несколько переработок от PHP кода к C89 (надеюсь, 89). Но довольно запутанно получилось. Код для Linux. Но если убрать time и то, что с ним. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru