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

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

06.08.2010, 20:13. Показов 17129. Ответов 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
Ответ Создать тему
Новые блоги и статьи
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru