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

что означает этот синтаксис? - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 9, средняя оценка - 4.67
OMGHero
2 / 2 / 0
Регистрация: 16.02.2011
Сообщений: 36
03.05.2011, 10:47     что означает этот синтаксис? #1
Добрый день!
в книге Бьерна Страуструпа встретил такой код
C++
1
enum token_valut {NAME, NUMBER, END, PLUS='+'}
что значит PLUS='+' ?!
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
marina2
Рожденная для битвы
 Аватар для marina2
268 / 48 / 4
Регистрация: 08.11.2009
Сообщений: 1,016
03.05.2011, 10:50     что означает этот синтаксис? #2
Цитата Сообщение от OMGHero Посмотреть сообщение
что значит PLUS='+' ?!
Ну переменной PLUS присваивается значение - символ '+'

Не по теме:

Лучше весь код выложи

mansp
18 / 18 / 0
Регистрация: 07.11.2010
Сообщений: 136
03.05.2011, 10:50     что означает этот синтаксис? #3
PLUS='+' инициализация символом +
Nameless One
Эксперт С++
 Аватар для Nameless One
5753 / 3402 / 255
Регистрация: 08.02.2010
Сообщений: 7,393
03.05.2011, 10:52     что означает этот синтаксис? #4
Цитата Сообщение от marina2 Посмотреть сообщение
Ну переменной PLUS присваивается значение - символ '+'.
PLUS - это не переменная. См. enum'ы С/С++
OMGHero
2 / 2 / 0
Регистрация: 16.02.2011
Сообщений: 36
03.05.2011, 11:00  [ТС]     что означает этот синтаксис? #5
Цитата Сообщение от marina2 Посмотреть сообщение
Ну переменной PLUS присваивается значение - символ '+'
ну во первых символ присвоить мы не можем.
Это скорее всего компилятор вместо '+' подставляетс ascii код этого символа
taras atavin
Ушёл с форума.
 Аватар для taras atavin
3569 / 1752 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
03.05.2011, 11:06     что означает этот синтаксис? #6
Цитата Сообщение от marina2 Посмотреть сообщение
Ну переменной PLUS присваивается значение - символ '+'
не переменной, а идентификаторы значения, это всё таки енам.
OMGHero
2 / 2 / 0
Регистрация: 16.02.2011
Сообщений: 36
03.05.2011, 11:06  [ТС]     что означает этот синтаксис? #7
Да, это он код символа подставляет, я проверил
accept
4837 / 3236 / 165
Регистрация: 10.12.2008
Сообщений: 10,682
03.05.2011, 11:07     что означает этот синтаксис? #8
C
1
enum { a, b, c = 1, d, e = 50 };
a = 0
b = 1
c = 1
d = 2
e = 50
taras atavin
Ушёл с форума.
 Аватар для taras atavin
3569 / 1752 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
03.05.2011, 11:08     что означает этот синтаксис? #9
Цитата Сообщение от OMGHero Посмотреть сообщение
ну во первых символ присвоить мы не можем.
Это скорее всего компилятор вместо '+' подставляетс ascii код этого символа
А что по твоему такое присваивание символа? Да и вообще символьное значение? В компе, как у Платона, всё есть число. Но код исмвола обозначает именно символ.
OMGHero
2 / 2 / 0
Регистрация: 16.02.2011
Сообщений: 36
03.05.2011, 11:17  [ТС]     что означает этот синтаксис? #10
В компе, как у Платона, всё есть число. Но код исмвола обозначает именно символ.
спорить не хочу.
есть типы переменных, да они представляются все числами, но это не значит что ты просто можешь int присвавать char. должно происходить преобразование типов
prZzZ
Программист
 Аватар для prZzZ
108 / 88 / 5
Регистрация: 22.03.2011
Сообщений: 232
03.05.2011, 11:20     что означает этот синтаксис? #11
OMGHero, Вы совершенно правы: это код символа '+'
В данном случае NAME = 0, NUMBER = 1 END = 2 PLUS = 43
Страуструп использует этот прием в функции синтаксического анализатора для калькулятора (если мне не изменяет память)
Veyron
 Аватар для Veyron
104 / 104 / 4
Регистрация: 02.06.2009
Сообщений: 579
03.05.2011, 11:47     что означает этот синтаксис? #12
Цитата Сообщение от OMGHero Посмотреть сообщение
но это не значит что ты просто можешь int присвавать char. должно происходить преобразование типов
Отчего это?

Сырчик:
C++
1
2
3
4
5
6
7
8
9
10
11
#include <iostream>
 
using namespace std;
 
int main()
{
    char c='A';
    int i=c;
    cout << i << endl;
    return 0;
}
Вывод:
eugene@eugene-desktop:~/проекты/code$ ./code
65
eugene@eugene-desktop:~/проекты/code$
Ваш ответ нечетко сформулирован. Если вы имели ввиду явное приведение типа, то оно тут не нужно. А если неявное - то тут уже другое дело(по идее неявное преобразование можно делать со всеми стандартными типами, только возможна потеря данных).

А по поводу плюса = в перечислении всем элементам по умолчанию присваиваются номера с нуля, а использование назначения другого значения - удобство для пользователя: например, использование в переключателе без дополнительных операций умножения-прибавления и пр.
taras atavin
Ушёл с форума.
 Аватар для taras atavin
3569 / 1752 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
03.05.2011, 11:48     что означает этот синтаксис? #13
Цитата Сообщение от Veyron Посмотреть сообщение
Отчего это?
Должно, а если оно подставляется не явно и не содрежит фактических преобразований, то сути это всё равно не меняет.
Veyron
 Аватар для Veyron
104 / 104 / 4
Регистрация: 02.06.2009
Сообщений: 579
03.05.2011, 12:51     что означает этот синтаксис? #14
Цитата Сообщение от taras atavin Посмотреть сообщение
Должно, а если оно подставляется не явно и не содрежит фактических преобразований, то сути это всё равно не меняет.
Ну это для нас. А для тех, кто не вникает в суть языка - это обычное присваивание.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
03.05.2011, 13:03     что означает этот синтаксис?
Еще ссылки по теме:

Поясните пожалуйста что означает двоеточие и то что идет после него C++
C++ Что такое #, include, что это означает
Что означает двоичный поиск?Как определить позицию, где в этот массив можно вставить число x C++

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

Или воспользуйтесь поиском по форуму:
OMGHero
2 / 2 / 0
Регистрация: 16.02.2011
Сообщений: 36
03.05.2011, 13:03  [ТС]     что означает этот синтаксис? #15
Цитата Сообщение от Veyron Посмотреть сообщение
Ваш ответ нечетко сформулирован.
Да, я имел ввиду неявное преобразование типов

Добавлено через 1 минуту
Страуструп использует этот прием в функции синтаксического анализатора для калькулятора (если мне не изменяет память)
Да, именно там.
Yandex
Объявления
03.05.2011, 13:03     что означает этот синтаксис?
Ответ Создать тему
Опции темы

Текущее время: 14:51. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru