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

Диапазон перечисления enum и его размер. - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Портирование http://www.cyberforum.ru/cpp-beginners/thread30827.html
Помогите пожалуйста с портированием задачи на си: определить один из седловых элементов матрицы (наибольший в строке и наименьший в столбце) uses crt; const n=3; m=4; var a:arrayof integer; i,j,k,max,jmax,min,imin:integer; begin clrscr; randomize;
C++ Целочисленная прямоугольная матрица Ребят,помогите пожалуйста найти ошибку... Задача:Дана целочисленная прямоугольная матрица.Определить:1)количество строк,не содержащих ни одного нулевого элемента;2)максимальное из чисел,встречающихся в заданной матрице более одного раза Вот что у меня получается)): #include <stdlib.h> #include <stdio.h> #include <iostream> #include <iomanip> #include <time.h> using namespace std; /* http://www.cyberforum.ru/cpp-beginners/thread30823.html
Считать матрицу из файла C++
Как считать размерность матрицы и затем саму матрицу из файла? Добавлено через 52 минуты 53 секунды HELP!!!!!!!!!!!!!!!!!:help:
C++ Открытия exeшника в бинарном виде
void main(void) { FILE * f = NULL; if(fopen("..\\debug\\ffffffff.exe", "r") == NULL) cout << "Owibka"; fclose(f); } Помогите плиз разобратся... Мне надо открыть собственно сам запускающий файл в бинарном виде. Ошибку выдает на fclose. Почему?
C++ Поиск слова в тексте. http://www.cyberforum.ru/cpp-beginners/thread30798.html
Дан текстовый файл с расширением txt. В нем очень много слов с определениями. Слово и его определение записано в одну строку. Пример: слово – его определение Еще слово – его определение Нужно чтоб происходил ввод слова с клавиатуры, затем это слово проверялось по блокноту. Если слово в блокноте есть, то вывод всей строки (слово + определение), Если нет такого слова, то сообщение о...
C++ Разность между максимальным и минимальным по абсолютной величине элементами целочисленного массива Здравствуйте, помогите решить задачку на С: Написать и протестировать функцию, вычисляющую разность между максимальным и минимальным по абсолютной величине элементами целочисленного массива. Системные функции не использовать! подробнее

Показать сообщение отдельно
Evg
Эксперт CАвтор FAQ
17469 / 5707 / 362
Регистрация: 30.03.2009
Сообщений: 15,663
Записей в блоге: 26
21.04.2009, 22:56     Диапазон перечисления enum и его размер.
Цитата Сообщение от ISergey Посмотреть сообщение
C++
1
2
enum e1{a=3,b=9};
e1 c=85;//у меня такое даже не скомпелит
Потому что ты нигде не определяешь тип e1. Определяешь только тип "enum e1", что не одно и то же. По крайней мере с точки зрения Си. Но вот на Си++ есть какие-то правила в каком-то порядке, но в данном случае "e1" будет соответсвоать "enum e1". Правильно писать "enum e1 c = 85"

Добавлено через 7 минут 7 секунд
Цитата Сообщение от Humanitis Посмотреть сообщение
Стандарт запрещает преобразование int в тип enum
Насколько я знаю, не запрещает. Хотя мои знания касаются в основном Си. Но принципиальной недопустимости такой операции на Си++ как-то с ходу не вижу.

Цитата Сообщение от Humanitis Посмотреть сообщение
Однако у каждого перечисления есть основной тип,по умолчанию он int
И ещё. Этот тип не меньше чем int. Т.е. если у тебя в enum'е все константы влезают в 32 бита, то базовым типом будет int (или unsigned int, с ходу не скажу). Если константы бОльшего размера, то наименьший тип, имеющий размер 8. Для 32-разрядных машин это long long, для 64-разрядных - long (либо соответсвующие unsigned)

Проверить, что именно мы имеем в данном случае, можно таким примером:

C++
1
2
3
4
5
6
7
8
9
10
11
#include <stdio.h>
 
enum a
{
  A=5,
};
 
main()
{
  printf("%d\n", (int)sizeof(enum a));
}
При исполнении напечатается 4 (что соотвествут 32 битам или типу int)
Если сделаешь A=0x1122334455667788LL, то размер будет 8
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru