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

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

06.08.2010, 20:13. Показов 17807. Ответов 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
21285 / 8310 / 637
Регистрация: 30.03.2009
Сообщений: 22,671
Записей в блоге: 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
21285 / 8310 / 637
Регистрация: 30.03.2009
Сообщений: 22,671
Записей в блоге: 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
21285 / 8310 / 637
Регистрация: 30.03.2009
Сообщений: 22,671
Записей в блоге: 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
Ответ Создать тему
Новые блоги и статьи
Программный домашний кинотеатр
russiannick 27.09.2026
Сподобился на программный домашний кинотеатр. В качестве ЯВУ по традиции выбрал js. В помощники взял Яндекс-Алису. Было создано три зала на разные интересы. исторические и ретро сериал Хичкок. . .
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#. Название изменил на ColorStep. Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
Запрет дублирования строк в табличной части
Maks 13.09.2026
Реализация из решения ниже выполнена на нетиповом справочнике "Нормы ТО" с табличной часть "Виды ТО", разработанного в КА2, со следующими реквизитами: - ВидТО (СправочникСсылка. ВидыТО); - ВидГСМ. . .
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр. Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала. Ниже прикреплён. . .
Программа опроса у.з. расходомера SLS-720F
Argus19 02.09.2026
Программа опроса у. з. расходомера SLS-720F Программа опрашивает один раз в минуту три ультразвуковых расходомера SLS-720F через интерфейс RS-485 по протоколу Modbus RTU. Опрашиваются регистры. . .
Hyper-V: Компьютер должен поддерживать доверенный платформенный модуль 2.0.
Maks 31.08.2026
При установке Windows 11 на виртуальную машину Hyper-V 2-го поколения вылезла такая ошибка: Решение: в параметрах виртуальной машины, в разделе "Безопасность" (Security) активировать флаг. . .
Архитектура биовида Стива в Майнкрафте: Зачем бонобо кубический каннибализм
anaschu 30.08.2026
Кубический Вагинокапитализм в Minecraft: Математический инвариант ОДУ и рок Стивов-бонобо Главная задача разработанной «Модели Всего» — наглядно продемонстрировать наличие системной «судьбы». . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru