Другие языки программирования и технологии

Учю с++ помогите разобратся с некоторыми вопросами.

Вот так нормально делать: const float pi =3.14; float pi = 3.14; ? Или будет конфликт? И ещё вот так: enum Deys {Sunday , Monday , Tuesday , Wednesday , Thursday , Friday , Saturday}; const int Sunday = 0; const int Monday = 1; const int Tuesday = 2; const int Wednesday = 3; const int Thursday = 4; const int Friday = 5; const int Saturday = 6; ? Или тоже будет конфликт? и если сделать так: #define age 2; const int age = 2; будет конфликт?
1)с пи будет ошибка переменная pi объявлена 2 раза
2)с энамами должно работать, переменная будет типа дей, а значение санди, манди и т. д. , а переменная санди будет равна 0, манди =1 и т. д. разное в общем, но я не советую энамы использовать это только лишние проблемы, тоже самое что пытаться в свой код объединение пристроить
3)дефайн используй только для создания макросов
Валера Федоров
Валера Федоров
2 142
Лучший ответ
Алексей Левчук Спасибо сразу видно ты проффесионал а не то что эти а зачем какой смысл и тд. и тп. ну ладно дефайн только для макросов но я пока не знаю что такое макрос обьясни будет конфликт в последней ситуации?
Валера Федоров должен быть, я на с++ давно не писал и не пользовался такими штуками, это считается плохим стилем программирования, если надо переменную сделать сделай о нормальному, если надо заменить, то дефайн тоже не нужен, поиском найди все что надо и замени, еще видел такие штуки в учебниках, чтобы константу не объявлять, про которую следующая глава, пользуются директивами, в макросах используется такая штука: условие?если_true:если_false
например:
if (a
Валера Федоров Не надо так сильно останавливаться на переменных
за энам забудь, просто знай что есть такое, с константами тоже не парься, прийдет время поймешь где она нужна, а где нет, дерективы тоже можешь забыть, только запутаешься больше, если их использовать
Естественно, ненормально и не пройдет. Во всех случаях конфликт на конфликте и конфликтом погоняет.
Алексей Левчук обьясни почему плиз
Если писать в программе оба варианта, естественно будет ошибка из-за конфликта имён. Но каждый вариант имеет свои преимущества и недостатки, а по-этому имеет право на жизнь.
cоnst flоat pi =3.14;
float pi = 3.14;
Использую const,ты гарантируешь, что переменная pi в пределах программы останется неизменной, при этом она может помещаться в специальную область памяти, а не в область стека. Изменить её можно только из вне программы.

enum Deys {Sunday, Monday, Tuesday, Wednesday, Thursday, Friday, Saturday};

cоnst int Sunday = 0;
cоnst int Mоnday = 1;
cоnst int Tuesday = 2;
cоnst int Wednesday = 3;
cоnst int Thursday = 4;
cоnst int Friday = 5;
cоnst int Saturday = 6;
При использовании перечислений есть свои нюансы. Они могут как повысить читаемость небольшого кода, так и запутать код. Одним из плюсов их применения является то, что гарантируется неизменность переменных. Если Sunday==0, то её уже изменить нельзя, что бывает иногда полезно. Можно использовать и второй вариант с const int Sunday=0,но так больше клацать по клаве. enum можно использовать как объект. Но, всё же, все переменные перечислением не заменишь.

#define age 2
cоnst int age = 2;
В этом случае компилируется совсем разный код. Во втором случае в коде есть переменная, которая помещается в область данных и программа во время выполнения обращается к определённой ячейке памяти для извлечения значения age.В первом же случае при компиляции программы в бинарный код везде вместо идентификатора age подставится 2.Таже деректива define удобна при многофайловом проекте. Написал #define age 2 в заголовочном файле и приприинклудил его к другим где нужно. Чтобы сделать перменную age видимой в многофайловой сборке нужно больше повозиться. Хотя, например, Шилдт пишет, что использование extern и const предпочтительней define.

В-общем, использовать можно любые предложенные тобой варианты. Для каждого есть своё применение.
Aidos Akimov
Aidos Akimov
9 759
а смысл два раза объявлять переменные?
ни чё не поня ты наверное будующий хакер?
__
_-Bboy_Kasper _
198
Алексей Левчук Как не понял это ж самые основы? Или ты не программист?