Модераторы: Daevaorn
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Что означают 1L 2L 
:(
    Опции темы
Nuzur
Дата 15.3.2006, 15:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



я так понял что ето часть слова или чего-то там такого.
Просто наткнулся на строку

Код


    dtTempDateTime = dtTempDateTime - (CComDateTime)1L



и никак не могу понять что автор хотел етим добиться.


--------------------
Never again...
PM MAIL   Вверх
np9mi7
  Дата 15.3.2006, 15:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 553
Регистрация: 17.8.2003
Где: Volgograd, Russia

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



Это приведение значения 1 типа long к типу CComDateTime;


--------------------
"Я точно знаю то, что ничего не знаю..." Сократ.
evolution project
PM MAIL WWW ICQ MSN   Вверх
Nuzur
Дата 15.3.2006, 15:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



Цитата(np9mi7 @ 15.3.2006, 15:18)
Это приведение значения 1 типа long к типу CComDateTime;

а поподробней можно, я не про приведения типов, я про то, зачем нужна запись (CComDateTime)1L и что она выполняет.


--------------------
Never again...
PM MAIL   Вверх
np9mi7
  Дата 15.3.2006, 15:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 553
Регистрация: 17.8.2003
Где: Volgograd, Russia

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



Цитата
а поподробней можно, я не про приведения типов, я про то, зачем нужна запись (CComDateTime)1L и что она выполняет
, можно:
Код

dtTempDateTime = dtTempDateTime - CComDateTime (long (1));

ps: что такое CComDateTime?

Это сообщение отредактировал(а) np9mi7 - 15.3.2006, 15:29


--------------------
"Я точно знаю то, что ничего не знаю..." Сократ.
evolution project
PM MAIL WWW ICQ MSN   Вверх
Nuzur
Дата 15.3.2006, 15:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



Цитата(np9mi7 @ 15.3.2006, 15:28)
Код

dtTempDateTime = dtTempDateTime - CComDateTime (long (1));

ps: что такое CComDateTime?

Если я правильно понял

(CComDateTime)1L == CComDateTime (long (1)) последний в свою очередь вызывает CComDateTime с параметром 1-ца, тоесть конструктор с параметром длинная 1-ца smile

ССщьВфеуЕшьу сой долгий и нудній класс неясно чем лучше COleDateTime но использовать нужно его, так сказал САМ

Это сообщение отредактировал(а) Nuzur - 15.3.2006, 15:40


--------------------
Never again...
PM MAIL   Вверх
np9mi7
  Дата 15.3.2006, 15:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 553
Регистрация: 17.8.2003
Где: Volgograd, Russia

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



smile
Цитата
(CComDateTime)1L == CComDateTime (long (1)) последний в свою очередь вызывает CComDateTime с параметром 1-ца, тоесть конструктор с параметром длинная 1-ца smile
, ты правильно понял;


--------------------
"Я точно знаю то, что ничего не знаю..." Сократ.
evolution project
PM MAIL WWW ICQ MSN   Вверх
Earnest
Дата 17.3.2006, 19:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



1 (и любая целочисленная константа) - это int.
1L - это long. Разные типы (теоретически).
Добавлено @ 19:12
Допустим, вы хотите написать что-то вроде:
Код

a = std::max(a,10); 
Если переменная "a" имеет long, компилятор будет орать про "ambiguous".
Придется писать что-то вроде std::max<long>(a,10) или std::max((int)a,10).
А можно написать std::max(a,10L).
(Пыталась придумать, нафига это нужно smile )


--------------------
...
PM   Вверх
Lotrex
Дата 17.3.2006, 19:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

Репутация: 2
Всего: 3



Иногда и практически (к примеру, на 16-ти разрядных платформах). У кого-то (по-моему, у Голуба) прочитал, как он промучился весь день со следующей конструкцией:

Код

long i = 0xFFFF;


В результате такого присваиваивания у него значение i получалось равным -1 (минус единице). Вылечить это дело он смог только так:

Код

long i = 0xFFFFL;


Я такую же штуку попробовал сделать на 16-ти битном компилере - но повторить не удалось (все присвоилось правильно, к прибамбасам вроде L прибегать не пришлось).
PM MAIL ICQ   Вверх
Janus
Дата 18.3.2006, 17:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Цитата

Лечить эту штуку надо так:
Код

unsigned long i = 0xFFFF;



Видишь ли, 0xFFFF означает, что все биты числа заполнятся единицами. В знаковых числах есть один знаковый бит, и если он установлен в 1, то число считается отрицательным, а его запись - это дополнительный код числа. Так что 0xFFFF - это и есть -1, это не баг и не глюк, это правильно.

Кроме того, раз уж на то пошло, проверь диапазоны.

(для 32-разрядных платформ) {
long не может превышать + 2147483648, а 0xFFFFFFFF = 4294967296, если учитывать отсутствие знака, как это было у тебя.
}

(для 16-разрядных платформ) {
long не может превышать + 32768, а 0xFFFF = 65536, если учитывать отсутствие знака, как это было у тебя.
}

Проще говоря, ты пытался засунуть в переменную больше, чем она может вместить.

Это сообщение отредактировал(а) Janus - 21.3.2006, 18:46
--------------------
Проект "Репликатор" 
PM MAIL   Вверх
bel_nikita
Дата 21.3.2006, 15:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Эксперт
Сообщений: 2304
Регистрация: 12.10.2003
Где: Поезд №21/22 ( ст . Прага )

Репутация: 21
Всего: 47



Цитата(Janus @ 18.3.2006, 16:11)
long не может превышать + 2147483648, а 0xFFFF = 4294967296, если учитывать отсутствие знака, как это было у тебя. Проще говоря, ты пытался засунуть в переменную больше, чем она может вместить.

Не мути smile
0хFFFF == 65535 smile


--------------------
user posted image — регистрация доменов от 150 руб.
PM MAIL WWW ICQ   Вверх
Janus
Дата 21.3.2006, 18:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Ну да, стормозил. Не 0xFFFF, а 0xFFFFFFFF. Это я с 32х разрядными напутал. Счас поправлю верхнее сообщение.
--------------------
Проект "Репликатор" 
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




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


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

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