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

Суффиксы числовых литералов

26.03.2017, 19:59. Показов 8777. Ответов 12
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
в учебнике видел вот такую строчку:
const float PI = 3.14159F;

или вот такую:
longvar = 7678L;

вопрос такой: зачем в конце цифр ставить букву соответствующую первой букве используемого типа данных?
Спасибо!
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
26.03.2017, 19:59
Ответы с готовыми решениями:

Ввод в переменную числовых и не числовых данных
Здравствуйте, у меня есть программа (сегодня писал о ней в одной из предыдущих тем), там есть цикл в котором несколько раз выводится либо 1...

Префиксы и суффиксы
Всем привет. Помагите найти ошибку в коде. Заданы две строки S и s. Определить, является ли строка s префиксом, суффиксом, и тем, и...

Суффиксы в переменных
Читаю Герберта Шилдта. Упомянул он как-то про про суффик который надо использовать при присвоении летерала, например для decimal - m(M). ...

12
1373 / 596 / 199
Регистрация: 02.08.2011
Сообщений: 2,886
26.03.2017, 20:26
Потому что в первом случае без F будет double, которая приведётся к float, а во втором, без L, будет int, которая приведётся к longvar.

Добавлено через 2 минуты
А ныне имеем float и long без приведений.
1
Заблокирован
26.03.2017, 20:39
Цитата Сообщение от daslex Посмотреть сообщение
в первом случае без F будет double, которая приведётся к float
Чем и в какой момент это самое приведение осуществится?
1
1373 / 596 / 199
Регистрация: 02.08.2011
Сообщений: 2,886
26.03.2017, 21:09
Компилятором.
Я не могу сказать о моменте времени абсолютно ничего. Полагаю, всё зависит от их внутренних оптимизаций.

Добавлено через 11 минут
Как бы процессы различны:
без суффиксов - создаётся prvalue типа double/int, которая приводится к float/long. Это обозначает, что происходит лишнее преобразование, которого можно избежать. В зависимости от настроек оптимизаций, может этого и не происходить, но именно из-за существования оптимизаций тип числа вида 1234 воспримется как int, а тип числа 12.33 как double. Чтобы скопировать что-то в long, нужно создать long, поэтому пройдёт второе преобразование, как и с double-float. С этим легко согласиться.
Компилятор компилятору рознь, поэтому здесь не всё прям однозначно, но сам такой процесс в некоторых компиляторах случается.

Я ни доказать этого не могу, ни сказать, где это я вычитал. Читал о приведениях типа, запомнил.
1
Заблокирован
26.03.2017, 21:11
Цитата Сообщение от daslex Посмотреть сообщение
без суффиксов - создаётся prvalue типа double/int, которая приводится к float/long. Это обозначает, что происходит лишнее преобразование, которого можно избежать. В зависимости от настроек оптимизаций, может этого и не происходить, но именно из-за существования оптимизаций тип числа вида 1234 воспримется как int, а тип числа 12.33 как double. Чтобы скопировать что-то в long, нужно создать long, поэтому пройдёт второе преобразование, как и с double-float. С этим легко согласиться.
Боюсь, что в случае с константой, напротив с этим легко не соглашусь. В программе не будет double и int, потому что код, который что-то к чему-то приводит класть просто некуда и он не нужен. Программы будут одинаковы, что с F, что без F.
1
1373 / 596 / 199
Регистрация: 02.08.2011
Сообщений: 2,886
26.03.2017, 21:30
В программе нет. Вне коробки программы, но и вне нашего взора они должны быть.
prvalue создавать точно также не нужно, когда пишем int i = 100, ибо якобы класть его, этот prvalue, тупо некуда. (Сарказм)

Программы будут одинаковы, но это всё следствие неявных приведений prvalue.

Добавлено через 1 минуту
В случае с суффиксами для prvalue явно задаётся тип. В случае без суффиксов тип prvalue выводится компилятором.

Добавлено через 2 минуты
Да и ладно. Спорить я не буду. Я тихо подожду других людей. Буду наблюдателем.
1
Заблокирован
26.03.2017, 21:33
.
1
1 / 1 / 0
Регистрация: 26.03.2017
Сообщений: 40
26.03.2017, 22:22  [ТС]
так в итоге что???
зачем после инициализации переменных ставить первую букву ее типа данных???

без этих букв все прекрасно работает) просто в учебнике они повсюду) вот и возник вопрос)
0
1373 / 596 / 199
Регистрация: 02.08.2011
Сообщений: 2,886
26.03.2017, 22:25
Не ставьте. Вы ничего не потеряете.

Добавлено через 1 минуту
Но иногда имеет смысл говорить в каком учебнике, потому что часто недоглядев спрашиваем. А потом удивляемся, что всё в учебнике написано было.
1
Заблокирован
26.03.2017, 22:53
Цитата Сообщение от cvetkof Посмотреть сообщение
так в итоге что???
В итоге все, как описал daslex. Только для констант в итоговом бинаре разницы не будет. В случае с кодом разница может быть, зависит от оптимизации.
Цитата Сообщение от cvetkof Посмотреть сообщение
просто в учебнике они повсюду)
Хреновый учебник, раз он не пишет, зачем что-то делает. Бери другой.
1
1373 / 596 / 199
Регистрация: 02.08.2011
Сообщений: 2,886
26.03.2017, 23:10
Лучший ответ Сообщение было отмечено cvetkof как решение

Решение

В некоторых случаях компилятор сам выкинет эти суффиксы. Так что особо заморачиваться смысла нет. Принимайте это как желание автора подчеркнуть тип данных, чтобы его читатели на это посмотрели, чтобы подумали, чтобы задумались наконец, что тип данных имеет важное значение.
1
1 / 1 / 0
Регистрация: 26.03.2017
Сообщений: 40
27.03.2017, 17:38  [ТС]
Спасибо!
0
Evg
Эксперт CАвтор FAQ
 Аватар для Evg
21281 / 8305 / 637
Регистрация: 30.03.2009
Сообщений: 22,660
Записей в блоге: 30
27.03.2017, 20:29
Чисто на всякий случай. С суффиксом и без суффикса можно словить разное поведение
U, L, F в константах

Добавлено через 52 секунды
И ещё тут: U, L, F в константах
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
27.03.2017, 20:29
Помогаю со студенческими работами здесь

dns-суффиксы
у меня такой вопрос где в linux можно вписать днс суффикс ? для настройки лакальной сити . я только что установил linux так что полный 0

Суффиксы ссылок
Здравствуйте, подскажите пожалуйста стоит ли убрать суффикс ссылки ну хорошо это или поло если плохо то чем? я имею ввиду ...

Нужны ли суффиксы в значениях переменных
Сабж. В переменной типа long, к примеру, нужно к значению приписывать L? Просто вроде в обоих случаях все работает, и ошибки нет.

Для чего нужны суффиксы?
Здравствуйте. Начал изучать программирование практически с нуля, если не считать Бейсик из далеких 80-90х годов. Не могу понять зачем...

Использование литералов
В каких ситуациях может быть необходимость использовать литералы? Например, константа 1.2 по умолчанию типа double, а если мы хотим...


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

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru