Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.57/7: Рейтинг темы: голосов - 7, средняя оценка - 4.57
2 / 2 / 0
Регистрация: 16.02.2011
Сообщений: 36

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

03.05.2011, 10:47. Показов 1629. Ответов 14
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день!
в книге Бьерна Страуструпа встретил такой код
C++
1
enum token_valut {NAME, NUMBER, END, PLUS='+'}
что значит PLUS='+' ?!
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
03.05.2011, 10:47
Ответы с готовыми решениями:

Непонятный синтаксис: что означает запись ::__1 ?
Продолжаю изучать чудесную среду Clion, так вот, при переносе кода из одного файла в другой он интересным образом его изменил! Былоstruct...

Что означает этот код?
int SIMPLE(int a) { int i; if(a==2){ return 1; } if(a==0 || a==1 || a%2==0){ return 0; } ...

Что означает этот код?
Пример из книги Герберт Шилдт. После строчки "инициализация объекта строка" там идёт вот эта строчка p = (char *) malloc(size); ...

14
Рожденная для битвы
 Аватар для marina2
294 / 72 / 15
Регистрация: 08.11.2009
Сообщений: 1,272
03.05.2011, 10:50
Цитата Сообщение от OMGHero Посмотреть сообщение
что значит PLUS='+' ?!
Ну переменной PLUS присваивается значение - символ '+'

Не по теме:

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

0
18 / 18 / 7
Регистрация: 07.11.2010
Сообщений: 136
03.05.2011, 10:50
PLUS='+' инициализация символом +
0
Эксперт С++
 Аватар для Nameless One
5828 / 3479 / 358
Регистрация: 08.02.2010
Сообщений: 7,448
03.05.2011, 10:52
Цитата Сообщение от marina2 Посмотреть сообщение
Ну переменной PLUS присваивается значение - символ '+'.
PLUS - это не переменная. См. enum'ы С/С++
2
2 / 2 / 0
Регистрация: 16.02.2011
Сообщений: 36
03.05.2011, 11:00  [ТС]
Цитата Сообщение от marina2 Посмотреть сообщение
Ну переменной PLUS присваивается значение - символ '+'
ну во первых символ присвоить мы не можем.
Это скорее всего компилятор вместо '+' подставляетс ascii код этого символа
1
 Аватар для taras atavin
4226 / 1796 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
03.05.2011, 11:06
Цитата Сообщение от marina2 Посмотреть сообщение
Ну переменной PLUS присваивается значение - символ '+'
не переменной, а идентификаторы значения, это всё таки енам.
0
2 / 2 / 0
Регистрация: 16.02.2011
Сообщений: 36
03.05.2011, 11:06  [ТС]
Да, это он код символа подставляет, я проверил
0
4866 / 3288 / 468
Регистрация: 10.12.2008
Сообщений: 10,570
03.05.2011, 11:07
C
1
enum { a, b, c = 1, d, e = 50 };
a = 0
b = 1
c = 1
d = 2
e = 50
0
 Аватар для taras atavin
4226 / 1796 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
03.05.2011, 11:08
Цитата Сообщение от OMGHero Посмотреть сообщение
ну во первых символ присвоить мы не можем.
Это скорее всего компилятор вместо '+' подставляетс ascii код этого символа
А что по твоему такое присваивание символа? Да и вообще символьное значение? В компе, как у Платона, всё есть число. Но код исмвола обозначает именно символ.
1
2 / 2 / 0
Регистрация: 16.02.2011
Сообщений: 36
03.05.2011, 11:17  [ТС]
В компе, как у Платона, всё есть число. Но код исмвола обозначает именно символ.
спорить не хочу.
есть типы переменных, да они представляются все числами, но это не значит что ты просто можешь int присвавать char. должно происходить преобразование типов
0
Программист
 Аватар для prZzZ
119 / 97 / 11
Регистрация: 22.03.2011
Сообщений: 244
03.05.2011, 11:20
OMGHero, Вы совершенно правы: это код символа '+'
В данном случае NAME = 0, NUMBER = 1 END = 2 PLUS = 43
Страуструп использует этот прием в функции синтаксического анализатора для калькулятора (если мне не изменяет память)
1
 Аватар для Veyron
107 / 107 / 9
Регистрация: 02.06.2009
Сообщений: 578
03.05.2011, 11:47
Цитата Сообщение от 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$
Ваш ответ нечетко сформулирован. Если вы имели ввиду явное приведение типа, то оно тут не нужно. А если неявное - то тут уже другое дело(по идее неявное преобразование можно делать со всеми стандартными типами, только возможна потеря данных).

А по поводу плюса = в перечислении всем элементам по умолчанию присваиваются номера с нуля, а использование назначения другого значения - удобство для пользователя: например, использование в переключателе без дополнительных операций умножения-прибавления и пр.
1
 Аватар для taras atavin
4226 / 1796 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
03.05.2011, 11:48
Цитата Сообщение от Veyron Посмотреть сообщение
Отчего это?
Должно, а если оно подставляется не явно и не содрежит фактических преобразований, то сути это всё равно не меняет.
1
 Аватар для Veyron
107 / 107 / 9
Регистрация: 02.06.2009
Сообщений: 578
03.05.2011, 12:51
Цитата Сообщение от taras atavin Посмотреть сообщение
Должно, а если оно подставляется не явно и не содрежит фактических преобразований, то сути это всё равно не меняет.
Ну это для нас. А для тех, кто не вникает в суть языка - это обычное присваивание.
1
2 / 2 / 0
Регистрация: 16.02.2011
Сообщений: 36
03.05.2011, 13:03  [ТС]
Цитата Сообщение от Veyron Посмотреть сообщение
Ваш ответ нечетко сформулирован.
Да, я имел ввиду неявное преобразование типов

Добавлено через 1 минуту
Страуструп использует этот прием в функции синтаксического анализатора для калькулятора (если мне не изменяет память)
Да, именно там.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
03.05.2011, 13:03
Помогаю со студенческими работами здесь

Что означает этот warning?
warning: extended initializer lists only available with -std=c++0x or -std=gnu++0x Появляется когда я меняю это: pvertex.x =...

Что означает этот код
void inline static Compare(Shape const* const s1, Shape const* const s2), что здесь означает запись const* const

Вопрос: что означает этот цикл?
Что означает цикл for (int I=0; w; I++); если 1) w – числовой од-номерный массив, 2) w -- строка; 3) w – массив указателей.

Что означает двоичный поиск?Как определить позицию, где в этот массив можно вставить число x
помогите решить эту задачу &quot;Элементы массива не убывают. Двоичным поиском определить позицию, где в этот массив можно вставить данное число...

Поясните пожалуйста что означает двоеточие и то что идет после него
В 4 строчке после параметра в скобочках нету &quot;;&quot; или же тела функции, что не сходится с моим шаблоном в голове. Поясните пожалуйста что...


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

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
SDL3 для Web (WebAssembly): Работа со звуком через SDL3_mixer
8Observer8 08.02.2026
Содержание блога Пошагово создадим проект для загрузки звукового файла и воспроизведения звука с помощью библиотеки SDL3_mixer. Звук будет воспроизводиться по клику мышки по холсту на Desktop и по. . .
SDL3 для Web (WebAssembly): Основы отладки веб-приложений на SDL3 по USB и Wi-Fi, запущенных в браузере мобильных устройств
8Observer8 07.02.2026
Содержание блога Браузер Chrome имеет средства для отладки мобильных веб-приложений по USB. В этой пошаговой инструкции ограничимся работой с консолью. Вывод в консоль - это часть процесса. . .
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru