Форум программистов, компьютерный форум CyberForum.ru

литералы в С++ - C++

Восстановить пароль Регистрация
 
PriZrаK
-116 / 0 / 1
Регистрация: 28.01.2014
Сообщений: 144
28.01.2014, 22:03     литералы в С++ #1
Никак не могу разобраться float A = 5.5F зачем это(5.5F) нужно, нет я понимаю что тип с плавающей точкой по умолчанию Double, но тут то зачем ведь переменная А воспринимается компилятором как float, помогите разобраться зачем нужны эти спецификаторы (UL - unsigned long, U - unsigned и прочие)
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Frosten
3 / 3 / 5
Регистрация: 28.01.2014
Сообщений: 13
29.01.2014, 00:02     литералы в С++ #2
Цитата Сообщение от PriZrаK Посмотреть сообщение
помогите разобраться зачем нужны эти спецификаторы (UL - unsigned long, U - unsigned и прочие)
Usigned - это значит, что в переменной могут быть только положительные переменные, благодаря чему максимальное количество элементов будет выше чем у обычной переменной int. Обычно используется только для тех случаев, когда идет вычисление миллионов, факториалов и т.п.

Long - тоже увеличивает максимальное количество элементов, но только на 16 битных системах, на 32 битах разницы между лонг инт и просто инт нет.
PriZrаK
-116 / 0 / 1
Регистрация: 28.01.2014
Сообщений: 144
29.01.2014, 00:42  [ТС]     литералы в С++ #3
Цитата Сообщение от Frosten Посмотреть сообщение
Usigned - это значит, что в переменной могут быть только положительные переменные, благодаря чему максимальное количество элементов будет выше чем у обычной переменной int. Обычно используется только для тех случаев, когда идет вычисление миллионов, факториалов и т.п.

Long - тоже увеличивает максимальное количество элементов, но только на 16 битных системах, на 32 битах разницы между лонг инт и просто инт нет.
Это я знаю, но так и не понял зачем писать так float A = 5.5F, ведь в А все равно хранится вещественное число
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
29.01.2014, 00:54     литералы в С++ #4
Цитата Сообщение от PriZrаK Посмотреть сообщение
Это я знаю, но так и не понял зачем писать так float A = 5.5F, ведь в А все равно хранится вещественное число
5.5 тоже где-то хранится. Так оно хранится как double: 5.5, а так как float: 5.5F. Так будет присвоение без приведения типов: float A = 5.5F, а так с приведением double к float: float A = 5.5.
PriZrаK
-116 / 0 / 1
Регистрация: 28.01.2014
Сообщений: 144
29.01.2014, 00:58  [ТС]     литералы в С++ #5
Цитата Сообщение от alsav22 Посмотреть сообщение
5.5 тоже где-то хранится. Так оно хранится как double: 5.5, а так как float: 5.5F. Так будет присвоение без приведения типов: float A = 5.5F, а так с приведением double к float: float A = 5.5.
а если такой пример :
wchar_t wc;
wc = L'A';
почему L(long) впереди
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
29.01.2014, 01:03     литералы в С++ #6
Цитата Сообщение от PriZrаK Посмотреть сообщение
почему L(long) впереди
Так придумали. Это же не числовая константа (как в теме), а символьная.
vua72
410 / 410 / 83
Регистрация: 28.11.2010
Сообщений: 1,158
29.01.2014, 01:03     литералы в С++ #7
Для вещественных чисел по умолчанию принят тип double, если не писать суффикс f, то числовой литерал имеет тип double, а сама константа - float.
PriZrаK
-116 / 0 / 1
Регистрация: 28.01.2014
Сообщений: 144
29.01.2014, 01:06  [ТС]     литералы в С++ #8
Цитата Сообщение от vua72 Посмотреть сообщение
Для вещественных чисел по умолчанию принят тип double, если не писать суффикс f, то числовой литерал имеет тип double, а сама константа - float.
а зачем это нужно если к примеру float A = 5.5 результатом будет все равно float так же как и float A = 5.5F
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
29.01.2014, 01:10     литералы в С++ #9
C++
1
2
cout << "5.5 = " << sizeof(5.5) << endl; 
cout << "5.5F = " << sizeof(5.5F) << endl;
PriZrаK
-116 / 0 / 1
Регистрация: 28.01.2014
Сообщений: 144
29.01.2014, 01:18  [ТС]     литералы в С++ #10
Цитата Сообщение от alsav22 Посмотреть сообщение
C++
1
2
cout << "5.5 = " << sizeof(5.5) << endl; 
cout << "5.5F = " << sizeof(5.5F) << endl;
здесь вывод напрямую без присвоения, а если так то какая разница:
float A = 0.5;
cout << "A = 0.5 " << sizeof(A) << endl;
float B = 0.5F;
cout << "B = 0.5 " << sizeof(B) << endl;
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
29.01.2014, 01:20     литералы в С++
Еще ссылки по теме:

Целочисленные литералы Java SE
Можно ли сравнивать строковые литералы? как правильно это сделать? C++
C++ Символьные литералы, указатели и функция. Не могу понять, почему именно так

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

Или воспользуйтесь поиском по форуму:
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
29.01.2014, 01:20     литералы в С++ #11
Читаем:
Цитата Сообщение от alsav22 Посмотреть сообщение
5.5 тоже где-то хранится. Так оно хранится как double: 5.5, а так как float: 5.5F.
Yandex
Объявления
29.01.2014, 01:20     литералы в С++
Ответ Создать тему
Опции темы

Текущее время: 17:02. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru