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

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

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

Author24 — интернет-сервис помощи студентам
в учебнике видел вот такую строчку:
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 2
Потому что в первом случае без F будет double, которая приведётся к float, а во втором, без L, будет int, которая приведётся к longvar.

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

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

Я ни доказать этого не могу, ни сказать, где это я вычитал. Читал о приведениях типа, запомнил.
1
Заблокирован
26.03.2017, 21:11 5
Цитата Сообщение от 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 6
В программе нет. Вне коробки программы, но и вне нашего взора они должны быть.
prvalue создавать точно также не нужно, когда пишем int i = 100, ибо якобы класть его, этот prvalue, тупо некуда. (Сарказм)

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

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

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

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

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

Решение

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

Редактор формул (кликните на картинку в правом углу, чтобы закрыть)
Новые блоги и статьи
Создание и использование компонентов в Vue 3
Reangularity 14.03.2025
Компонент в Vue - это автономный блок интерфейса, который содержит собственную разметку, логику и стили. Представьте себе кнопку, форму ввода или даже целую панель навигации - всё это можно оформить. . .
Vue 3: Создаем современное веб-приложение с Composition API
Reangularity 14.03.2025
В фронтенд-разработке Vue 3 выделяется своим прагматичным подходом. В отличие от React с его минималистичной философией "всё — JavaScript" или Angular с его всеобъемлющим корпоративным подходом, Vue. . .
Разработка контекстных меню в iOS
mobDevWorks 14.03.2025
С приходом iOS 13 Apple представила новый API для контекстных меню, который полностью заменил предыдущую технологию 3D Touch peek & pop. Хотя многие разработчики и пользователи испытывают ностальгию. . .
Лучшие практики оптимизации Docker Image
Mr. Docker 13.03.2025
Размер Docker-образа влияет на множество аспектов работы с контейнерами. Чем больше образ, тем дольше его загрузка в реестр и выгрузка из него. Для команд разработки, работающих с CI/ CD пайплайнами,. . .
Вопросы на собеседовании по Docker
Mr. Docker 13.03.2025
Ты сидишь напротив технического специалиста, и вдруг звучит вопрос про Docker Swarm или многоэтапные сборки. Пот на лбу? Не переживай, после этой статьи ты будешь готов ко всему! Эта статья будет. . .
Поиск текста в сносках : замена дефиса на тире или тире на дефис...
РоΜа 13.03.2025
Нужно было найти текст в сносках и заменить. Почему-то метод селекшн не сработал. . . пришлось гуглить. найденный на форумвба код пришлось править. Смысл - заменяет в сносках дефисы и тире на нужные. . . .
Real PATH definitions in bash scripts
jigi33 13.03.2025
Как поймать путь и путь к директории относительно запускаемого файла в BASH 1. поймать путь через вывод $(pwd) 2. более правильно - на основе realpath (см. скриншот)
Django или Flask: что выбрать для веб-разработки на Python
py-thonny 13.03.2025
Django – это высокоуровневый фреймворк, который придерживается философии "всё включено". Он предоставляет разработчику готовые решения для большинства типичных задач веб-разработки: от аутентификации. . .
Непрерывное развертывание в Java с Kubernetes
Javaican 13.03.2025
Чем так привлекателен Kubernetes для развертывания Java-приложений? Этот оркестратор контейнеров позволяет автоматизировать развертывание, масштабирование и управление контейнеризированными. . .
Предотвращение XSS, CSRF и SQL-инъекций в JavaScript
run.dev 13.03.2025
JavaScript занимает первые позиции среди языков веб-разработки, но его распространенность делает его привлекательной целью для злоумышленников. Межсайтовый скриптинг (XSS), межсайтовая подделка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru
Выделить код Копировать код Сохранить код Нормальный размер Увеличенный размер