1 / 1 / 0
Регистрация: 26.03.2017
Сообщений: 40
|
|
1 | |
Суффиксы числовых литералов26.03.2017, 19:59. Показов 8526. Ответов 12
Метки нет Все метки)
(
в учебнике видел вот такую строчку:
const float PI = 3.14159F; или вот такую: longvar = 7678L; вопрос такой: зачем в конце цифр ставить букву соответствующую первой букве используемого типа данных? Спасибо!
0
|
26.03.2017, 19:59 | |
Ответы с готовыми решениями:
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
|
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 |
Боюсь, что в случае с константой, напротив с этим легко не соглашусь. В программе не будет 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
|
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 |
В итоге все, как описал daslex. Только для констант в итоговом бинаре разницы не будет. В случае с кодом разница может быть, зависит от оптимизации.
Хреновый учебник, раз он не пишет, зачем что-то делает. Бери другой.
1
|
1373 / 596 / 199
Регистрация: 02.08.2011
Сообщений: 2,886
|
|
26.03.2017, 23:10 | 11 |
![]() Решение
В некоторых случаях компилятор сам выкинет эти суффиксы. Так что особо заморачиваться смысла нет. Принимайте это как желание автора подчеркнуть тип данных, чтобы его читатели на это посмотрели, чтобы подумали, чтобы задумались наконец, что тип данных имеет важное значение.
1
|
1 / 1 / 0
Регистрация: 26.03.2017
Сообщений: 40
|
|
27.03.2017, 17:38 [ТС] | 12 |
Спасибо!
0
|
![]() ![]() ![]() |
|
27.03.2017, 20:29 | 13 |
Чисто на всякий случай. С суффиксом и без суффикса можно словить разное поведение
U, L, F в константах Добавлено через 52 секунды И ещё тут: U, L, F в константах
1
|
27.03.2017, 20:29 | ||||||
Помогаю со студенческими работами здесь
13
dns-суффиксы Суффиксы ссылок
Для чего нужны суффиксы? Использование литералов Искать еще темы с ответами Или воспользуйтесь поиском по форуму:
|
|
![]() |
Новые блоги и статьи
![]() |
||||
Создание и использование компонентов в 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), межсайтовая подделка. . .
|