Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Зачем указывать размер числа? например 0L или -1L 
:(
    Опции темы
Дмитрий Т
Дата 24.11.2006, 15:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 93
Регистрация: 16.3.2005
Где: Самара

Репутация: нет
Всего: 4



Читаю книгу по Visual C++  и в примерах вижу для переменных LONG такие вещи:

m_lFileSize = 0L;

if (lOffset != -1L)
{
}

Мне непонятно, а что разве компилятор 
LONG lFileSize = 0; и LONG lFileSize = 0L;
по разному компилирует?

Какой смысл в добавлении  L?
PM MAIL WWW ICQ Skype   Вверх
Rickert
Дата 24.11.2006, 17:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ситхи не пройдут!
****


Профиль
Группа: Комодератор
Сообщений: 3356
Регистрация: 11.7.2006
Где: Лакрима

Репутация: нет
Всего: 52



Скажем так - это что-то типа "правильного тона" программирования. Лично я этого не придерживаюсь.


--------------------
Ни что не внушает сна крепче, чем день приисполненный трудов!
PM MAIL WWW Skype GTalk   Вверх
Earnest
Дата 24.11.2006, 20:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5962
Регистрация: 17.6.2005
Где: Рязань

Репутация: 87
Всего: 183



Строго говоря, 0 - это int, поэтому может происходить преобразование типа. В данном случае, скорее всего, разницы нет. Но есть случаи, когда тип нужно задавать явно. Нарпимер, при использовании шаблонов:
Код

long A = 20;
long B = std::min (A, 10);     // это, скорее всего, не скомпилируется (разный тип аргументов)
long B = std::min (A, 10L);   // а это - должно



--------------------
...
PM   Вверх
Дмитрий Т
Дата 24.11.2006, 21:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 93
Регистрация: 16.3.2005
Где: Самара

Репутация: нет
Всего: 4



Цитата(Earnest @ 24.11.2006,  21:04)
Строго говоря, 0 - это int, поэтому может происходить преобразование типа.

Конечно преобразование будет и при том к тому самому LONG! Отсюда и вопрос возник, что зачем это автору понадобилось smile
Книга: " Visual C++ .NET. Библия пользователя." Том Арчер, Эндрю Уайтчепел.
PM MAIL WWW ICQ Skype   Вверх
SergeCpp
Дата 25.11.2006, 19:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


 
**


Профиль
Группа: Участник
Сообщений: 955
Регистрация: 8.8.2005
Где: At Home

Репутация: 5
Всего: 124



int f( int );
int f( long );

f( 0L );

Для случаев такого рода (это рафинированный пример).

Лично использовал (к исходникам сейчас доступа нет, поэтому реальный пример не смогу привести).

PM MAIL WWW ICQ   Вверх
Sartorius
Дата 25.11.2006, 19:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1568
Регистрация: 18.7.2006
Где: Ivory tower

Репутация: 1
Всего: 37



 Посмотрел Disassembly... По крайней мере VS2005 одно и то же для этих случаев генерит... ИМХО модификаторы у констант имеют значение тока для шаблонов и битовых сдвигов (1 << 32 = 0; 1L << 32 = 2^32)
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Visual C++/MFC/WTL | Следующая тема »


 




[ Время генерации скрипта: 0.0473 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.