Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.61/64: Рейтинг темы: голосов - 64, средняя оценка - 4.61
15 / 15 / 8
Регистрация: 15.08.2013
Сообщений: 190

Литерал это значение любой переменой, ведь так ?

25.10.2016, 21:13. Показов 13372. Ответов 34
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый вечер.

По ходу изучения программирования скопилось немало вопросов, к которым периодически приходится возвращаться.
Поэтому хотелось бы раз и навсегда ответить на один из них и запомнить. Что такое литерал ?

Как я понимаю, литерал - это значение любой переменной любого типа.
К примеру:

int a1=493 - тут литерал это 493
int a2=20 - тут литерал это 20
bool status=true - тут литерал это true
double x=120.83 - тут литерал это 120.83
char per1='p' - тут литерал это 'p'
char per2="M" - тут литерал это "M"
char array[10] - а тут литерал это array

Я верно понимаю ? значение переменной это литерал ? или только те значения которые объявлены как const являются литералами ?
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
25.10.2016, 21:13
Ответы с готовыми решениями:

Смешная ошибка. Java и JavaScript - это не одно и тоже - ведь так?
Всем привет! Недавно спорил с человеком насчёт того, что Java и JavaScript - это не одно и тоже, а !!!АБСОЛЮТНО!!! разные языки...

При каком способе адресации в качестве операнда берется содержимое регистра ? Это Регистровая адресация так ведь?
Привет, вопрос банальный, но боюсь подвоха При каком способе адресации в качестве операнда берется содержимое регистра? Это...

а ведь для кого-то это просто
Правильно поставленный вопрос это наполовину решенная проблема... Но проблема в том,что я не знаю как задать этот вопрос Суть вопроса...

34
Эксперт С++
 Аватар для Mr.X
3225 / 1752 / 436
Регистрация: 03.05.2010
Сообщений: 3,867
25.10.2016, 22:39
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от MRG_Serejka Посмотреть сообщение
т.е. грубо говоря, какое-либо значение переменной
Ну почему обязательно переменной?
Вам нужно понять, что значение - это принадлежность типа, а не переменной.
Литерал - любая
Цитата Сообщение от Mr.X Посмотреть сообщение
лексема, представляющая значение некоторого типа.
1
15 / 15 / 8
Регистрация: 15.08.2013
Сообщений: 190
25.10.2016, 22:41  [ТС]
TheCalligrapher, программа причем скомпилировалась и даже запустилась.
Но она ничего не делает и не выводит. В чем суть ?
0
Вездепух
Эксперт CЭксперт С++
 Аватар для TheCalligrapher
13210 / 6843 / 1824
Регистрация: 18.10.2014
Сообщений: 17,306
25.10.2016, 22:43
Цитата Сообщение от MRG_Serejka Посмотреть сообщение
Как это вообще можно использовать ????
Никак, наверное. Эта программа ничего полезного не делает. Тем не менее это совершенно корректная программа на С++. И она битком набита литералами.

Добавлено через 1 минуту
Цитата Сообщение от MRG_Serejka Посмотреть сообщение
Но она ничего не делает и не выводит. В чем суть ?
Суть в том, что это пример, иллюстрирующий тот факт, что литералы - самостоятельные сущности.

А говорить, что эта программа "ничего не делает" было бы опрометчивым. Концептуально, она, например, вычисляет сумму 2.5 + 6.8. А то, что эта сумма потом никуда не идет - вопрос отдельный.
1
Эксперт С++
4986 / 3093 / 456
Регистрация: 10.11.2010
Сообщений: 11,170
Записей в блоге: 10
25.10.2016, 22:44
Цитата Сообщение от Mr.X Посмотреть сообщение
Цитата Сообщение от TheCalligrapher Посмотреть сообщение
Ни на какой cout литералы выводиться не могут.
Ну почему же? В вышеприведенном примере операндами оператора << как раз литералы являются.
Являются. Но cout выводит не литералы, а их значения.
C++
1
    std::cout << .1e4 << std::endl;
.1e4 - литерал.
1000 - значение литерала.
1
Эксперт С++
 Аватар для Mr.X
3225 / 1752 / 436
Регистрация: 03.05.2010
Сообщений: 3,867
25.10.2016, 22:49
Цитата Сообщение от castaway Посмотреть сообщение
Цитата Сообщение от Mr.X
Ну почему же? В вышеприведенном примере операндами оператора << как раз литералы являются.

Являются. Но cout выводит не литералы, а их значения.
Не-не, про выводит я ничего не говорил!
1
15 / 15 / 8
Регистрация: 15.08.2013
Сообщений: 190
25.10.2016, 22:51  [ТС]
TheCalligrapher, пришел к выводу, что всё отдельно стоящие слова и значения в исходном тексте, что не являются функцией, оператором, переменной, массивом или управляющими символами является литералами. После всего что я прочел мне кажется это логичным
0
Эксперт С++
4986 / 3093 / 456
Регистрация: 10.11.2010
Сообщений: 11,170
Записей в блоге: 10
25.10.2016, 23:05
Цитата Сообщение от Mr.X Посмотреть сообщение
Не-не, про выводит я ничего не говорил!
Про "выводит" не говорили, но про "выводит" ответили

Хотя и с TheCalligrapher можно поспорить...
Цитата Сообщение от TheCalligrapher Посмотреть сообщение
Ни на какой cout литералы выводиться не могут.
C++
1
2
3
4
5
6
7
8
9
#include <iostream>
 
#define COUT( literal ) #literal
 
int main()
{
    std::cout << .1e4 << std::endl;
    std::cout << COUT( .1e4 ) << std::endl;
}
1
Вездепух
Эксперт CЭксперт С++
 Аватар для TheCalligrapher
13210 / 6843 / 1824
Регистрация: 18.10.2014
Сообщений: 17,306
25.10.2016, 23:18
Цитата Сообщение от MRG_Serejka Посмотреть сообщение
всё отдельно стоящие слова и значения в исходном тексте, что не являются функцией, оператором, переменной, массивом или управляющими символами является литералами
Определять литералы методом исключения - не самое продуктивное занятие.

В тексте С++ программы, после его обработки препроцессором, есть только следующие типы лексем: идентификаторы, ключевые слова, литералы, операторы, знаки пунктуации.

На этом этапе не надо вводить понятия "функции" или "переменной" - они все сидят в общей категории идентификаторов.

Добавлено через 8 минут
Цитата Сообщение от castaway Посмотреть сообщение
Хотя и с TheCalligrapher можно поспорить...
Не совсем понимаю, как это может использоваться для спора с мной. От того, что у нас на сетчатке нечто выглядит как литерал, совсем не означает, что это нечто является литералом. "Вероломство образов"
2
15 / 15 / 8
Регистрация: 15.08.2013
Сообщений: 190
25.10.2016, 23:20  [ТС]
castaway, прошу прощения.
Мне вроде все более менее понятно стало, за исключением одного вопроса.
cout << " ";
или
cout << ' ';

пробелы в этих кавычках являются литералами ?
0
Эксперт С++
4986 / 3093 / 456
Регистрация: 10.11.2010
Сообщений: 11,170
Записей в блоге: 10
25.10.2016, 23:30
Цитата Сообщение от MRG_Serejka Посмотреть сообщение
пробелы в этих кавычках являются литералами ?
Являются.
0
15 / 15 / 8
Регистрация: 15.08.2013
Сообщений: 190
25.10.2016, 23:35  [ТС]
castaway, а если у меня скажем
C++
1
cout << "      ";
6 пробелов, можно ли сказать что в моей программе используется 6 литералов ?
Или все что находится в кавычках считается как один литерал ?
0
Эксперт С++
4986 / 3093 / 456
Регистрация: 10.11.2010
Сообщений: 11,170
Записей в блоге: 10
25.10.2016, 23:42
Цитата Сообщение от MRG_Serejka Посмотреть сообщение
6 пробелов, можно ли сказать что в моей программе используется 6 литералов ?
Или все что находится в кавычках считается как один литерал ?
Это один строковой литерал.
0
15 / 15 / 8
Регистрация: 15.08.2013
Сообщений: 190
25.10.2016, 23:48  [ТС]
Всем кто уделил частичку своего времени огромное спасибо !!!
Особенно профессионалам: castaway, Mr.X и TheCalligrapher
Без вас было б тяжело понять. Более менее все понял, тему можно считать закрытой.
0
Эксперт С++
4986 / 3093 / 456
Регистрация: 10.11.2010
Сообщений: 11,170
Записей в блоге: 10
26.10.2016, 00:20
Цитата Сообщение от TheCalligrapher Посмотреть сообщение
Не совсем понимаю, как это может использоваться для спора с мной. От того, что у нас на сетчатке нечто выглядит как литерал, совсем не означает, что это нечто является литералом. "Вероломство образов"
Разумеется что при выводе через cout литералом это уже являться не будет. Я лишь имел в виду, что через cout можно передать (вывести) вид литерала на экран.
Я рассчитывал на то что вы это поймёте.

А вообще, это "попахивает" холиваром, который я очень сильно не люблю и не уважаю.
0
Вездепух
Эксперт CЭксперт С++
 Аватар для TheCalligrapher
13210 / 6843 / 1824
Регистрация: 18.10.2014
Сообщений: 17,306
26.10.2016, 00:51
Цитата Сообщение от MRG_Serejka Посмотреть сообщение
пробелы в этих кавычках являются литералами ?
Если говорить о литералах, как лексемах грамматики языка, то литералами тут являются " " и ' '. Именно целиком, вместе с кавычками. Литерал не разбирается на кусочки.

Если говорить об упоминавшемся мною дополнительном значении термина строковый литерал (именно строковый) - т.е. символьный массив в статической памяти - то значением строкового литерала " " является статический массив типа const char[2], содержащий значения пробел и '\0'.

Поэтому вопрос о том, являются ли отдельные пробелы в кавычках литералами несколько бессмыслен. Это все равно, что спрашивать, является ли точка в 25.38 литералом.

Добавлено через 8 минут
Цитата Сообщение от castaway Посмотреть сообщение
Я лишь имел в виду, что через cout можно передать (вывести) вид литерала на экран.
Но я никогда и не утверждал обратного. Тему "искажения" внешнего вида литерала при выводе на экран я не затрагивал вообще. Она, насколько я вижу, была впервые поднята вами же в сообщении #24.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
26.10.2016, 00:51

Как сделать так, чтобы вначале менялось значение массива, а потом только это значение проверялось?
Есть: $(document).ready(function() { document.reg.invite.form.submit.disabled = 1; }); var arr=; ...

что делает эта программа распишите пожалуйста? это ведь метод прогонки?
что делает эта программа распишите пожалуйста? это ведь метод прогонки? #include &lt;cstdio&gt; #include &lt;math.h&gt; #include...

Почему это компилируется, ведь под второй массив по идее не выделено в куче памяти
К сожалению на момент создания темы исходника не было под рукой...В общем что значит вот такой способ инициации двухмерного массива: int...

Какое получается значение и тип имеет литерал 3.14e1L
3.14e1L Какое получается значение и тип? смущает суффикс e

нужно создать таблицу из 3 строк и 4 столбцов и заполнить её (любой информацией,это неважно) . Как это можно сделать ?
Здравствуйте.У меня возникла проблема. Помогите пожалуйста!Модуль в понедельник , про таблицы ничего не рассказывали , а преподаватель...


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

Или воспользуйтесь поиском по форуму:
35
Ответ Создать тему
Новые блоги и статьи
Алиса нашла кучу ошибок компиляции и запуска в проекте, который без проблем компилировался и запускался)))
anaschu 30.06.2026
Я пока посмеюся, но завтра проверю. А вообще интерсно. Дал алисе файл, в котором точно нет ошибок компиляции и запуска, и попросил их найти. Нашла кучу))) Критические ошибки, мешающие компиляции и. . .
сукцессия 16. Общий обзор, в основном что бы другие ии поняли
anaschu 29.06.2026
# Передаточный документ: модель микоризной сукцессии (для нового чата) Этот документ предназначен для того, чтобы новый чат Claude мог продолжить работу без необходимости заново разбираться в. . .
сукцессия 15 неявная схема
anaschu 29.06.2026
Алиса Калибровка параметров симбиотической модели: технический обзор Содержание: Введение Постановка проблемы Технические аспекты реализации Процесс внедрения изменений
сукцессия 14. Обновленная схема модели
anaschu 28.06.2026
ГЛОБАЛЬНАЯ ОПИСАТЕЛЬНАЯ СПЕЦИФИКАЦИЯ ЭКОСИСТЕМНОЙ МОДЕЛИ «SOIL CHEMISTRY & MYCORRHIZA 2. 0» https:/ / ibb. co/ NnkGpfMd Представленная интегрированная схема описывает непрерывную нелинейную. . .
сукцессия 13. Питон модель трехзонного мицелия, пока что в основном арбускулярного
anaschu 28.06.2026
## Разработка агентной модели микоризной сукцессии: от выявления артефактов к созданию комплексной системы ### Аннотация Представлено исследование по разработке агентной модели микоризной. . .
сукцессия 12. краткий список проверок модели перед запуском.
anaschu 27.06.2026
Скрытые отказы в моделях систем динамики (SD-models) экологических систем: два случая из практики Контекст Разбирался прототип модели систем динамики (SD-модели) микоризной сукцессии: пять. . .
Сукцессия 11. Проверка орудий перед войной: разработка через тестирование
anaschu 27.06.2026
Как не дать модели соврать самой себе: проверки для симуляции микоризной сукцессии Введение Когда вы строите математическую модель живой системы — грибов, растений, почвы — главная опасность. . .
10 сукцессия. Питон код войны грибов и растений
anaschu 27.06.2026
import numpy as np class PlantAgent: def __init__(self, name, strategy, initial_biomass): self. name = name self. strategy = strategy # "greedy" (широколиственные) или. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru