Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 9, средняя оценка - 4.67
OMGHero
2 / 2 / 0
Регистрация: 16.02.2011
Сообщений: 36
#1

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

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

Добрый день!
в книге Бьерна Страуструпа встретил такой код
C++
1
enum token_valut {NAME, NUMBER, END, PLUS='+'}
что значит PLUS='+' ?!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
03.05.2011, 10:47
Я подобрал для вас темы с готовыми решениями и ответами на вопрос что означает этот синтаксис? (C++):

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

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

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

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

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

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

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

Не по теме:

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

0
mansp
18 / 18 / 0
Регистрация: 07.11.2010
Сообщений: 136
03.05.2011, 10:50 #3
PLUS='+' инициализация символом +
0
Nameless One
Эксперт С++
5783 / 3432 / 255
Регистрация: 08.02.2010
Сообщений: 7,448
03.05.2011, 10:52 #4
Цитата Сообщение от marina2 Посмотреть сообщение
Ну переменной PLUS присваивается значение - символ '+'.
PLUS - это не переменная. См. enum'ы С/С++
2
OMGHero
2 / 2 / 0
Регистрация: 16.02.2011
Сообщений: 36
03.05.2011, 11:00  [ТС] #5
Цитата Сообщение от marina2 Посмотреть сообщение
Ну переменной PLUS присваивается значение - символ '+'
ну во первых символ присвоить мы не можем.
Это скорее всего компилятор вместо '+' подставляетс ascii код этого символа
1
taras atavin
3888 / 1762 / 92
Регистрация: 24.11.2009
Сообщений: 27,565
03.05.2011, 11:06 #6
Цитата Сообщение от marina2 Посмотреть сообщение
Ну переменной PLUS присваивается значение - символ '+'
не переменной, а идентификаторы значения, это всё таки енам.
0
OMGHero
2 / 2 / 0
Регистрация: 16.02.2011
Сообщений: 36
03.05.2011, 11:06  [ТС] #7
Да, это он код символа подставляет, я проверил
0
accept
4831 / 3252 / 165
Регистрация: 10.12.2008
Сообщений: 10,569
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
0
taras atavin
3888 / 1762 / 92
Регистрация: 24.11.2009
Сообщений: 27,565
03.05.2011, 11:08 #9
Цитата Сообщение от OMGHero Посмотреть сообщение
ну во первых символ присвоить мы не можем.
Это скорее всего компилятор вместо '+' подставляетс ascii код этого символа
А что по твоему такое присваивание символа? Да и вообще символьное значение? В компе, как у Платона, всё есть число. Но код исмвола обозначает именно символ.
1
OMGHero
2 / 2 / 0
Регистрация: 16.02.2011
Сообщений: 36
03.05.2011, 11:17  [ТС] #10
В компе, как у Платона, всё есть число. Но код исмвола обозначает именно символ.
спорить не хочу.
есть типы переменных, да они представляются все числами, но это не значит что ты просто можешь int присвавать char. должно происходить преобразование типов
0
prZzZ
Программист
112 / 92 / 5
Регистрация: 22.03.2011
Сообщений: 236
03.05.2011, 11:20 #11
OMGHero, Вы совершенно правы: это код символа '+'
В данном случае NAME = 0, NUMBER = 1 END = 2 PLUS = 43
Страуструп использует этот прием в функции синтаксического анализатора для калькулятора (если мне не изменяет память)
1
Veyron
106 / 106 / 4
Регистрация: 02.06.2009
Сообщений: 578
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$
Ваш ответ нечетко сформулирован. Если вы имели ввиду явное приведение типа, то оно тут не нужно. А если неявное - то тут уже другое дело(по идее неявное преобразование можно делать со всеми стандартными типами, только возможна потеря данных).

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

Добавлено через 1 минуту
Страуструп использует этот прием в функции синтаксического анализатора для калькулятора (если мне не изменяет память)
Да, именно там.
1
03.05.2011, 13:03
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
03.05.2011, 13:03
Привет! Вот еще темы с ответами:

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

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

скажите пожалуйста, что означает здесь b. ,это какия-либо функция или что? - C++
скажите пожалуйста, что означает здесь b. ,это какия-либо функция или что? //анализируем все клетки доски for(int i = 0; i &lt; 8;...

Что означает запись в скобках и что возвращает return - C++
Всем привет! Начал читать книгу BecomeAnXcoder и тут появился вопрос. В пример приведен такой код circleArea(float theRadius) //(1) ...


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

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru