![]() |
|
![]() ![]() ![]() |
|
x8m6 |
|
||||
Бывалый ![]() Профиль Группа: Участник Сообщений: 156 Регистрация: 11.12.2008 Репутация: нет Всего: нет |
Компилю код компилятором Microsoft Visual C++ 1.5. В коде объявлена константа типа long long:
При компиляции через NMAKE появляется ошибка:
|
||||
|
|||||
Daevaorn |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2155 Регистрация: 29.11.2004 Где: Москва Репутация: нет Всего: 70 |
В чем вопрос?
|
|||
|
||||
x8m6 |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 156 Регистрация: 11.12.2008 Репутация: нет Всего: нет |
Как решить проблему или как в VC++ 1.5 задать такую константу? |
|||
|
||||
borisbn |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4875 Регистрация: 6.2.2010 Где: Ростов-на-Дону Репутация: 2 Всего: 135 |
Есть подозрение, что в 1983-м году студия была 16-битной и в ней просто не было возможности задавать 64-х битные числа.
Выбери студию поновее. У них есть и бесплатная версия -------------------- Женщины отличаются от программистов тем, что у них чары состоят из стрингов |
|||
|
||||
x8m6 |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 156 Регистрация: 11.12.2008 Репутация: нет Всего: нет |
borisbn, ты думаешь что я настолько отстал от жизни что пишу на студии 1983 года? Нет. Просто нужно скомпилить одну часть проекта этим компилятором.
|
|||
|
||||
volatile |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2107 Регистрация: 7.1.2011 Репутация: 4 Всего: 85 |
x8m6, попробуйте написать так
Если не прокатит, то значит там действительно еще нет поддержки 64-разрядных чисел. Остается в этом случае писать свою библиотеку 64-разрядной арифметики ![]() Вообще-то это не не так и сложно.. Только зачем? Ради спортивного итереса? |
|||
|
||||
Dem_max |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1780 Регистрация: 12.4.2007 Репутация: 1 Всего: 39 |
Я думаю не поможет
-------------------- Американские программисты долго не могли понять, почему русские при зависании Windоws всё время повторяют "Твой зайка написал" ("Yоur bunnу wrоte") |
|||
|
||||
x8m6 |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 156 Регистрация: 11.12.2008 Репутация: нет Всего: нет |
volatile, не помогло.
Хорошо, тогда немного другой вопрос. Как записать 64 битное число двумя 32 битными (low and high части)? Если поможете кодом буду только рад. |
|||
|
||||
borisbn |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4875 Регистрация: 6.2.2010 Где: Ростов-на-Дону Репутация: 2 Всего: 135 |
Это сообщение отредактировал(а) borisbn - 23.1.2012, 14:42 -------------------- Женщины отличаются от программистов тем, что у них чары состоят из стрингов |
|||
|
||||
x8m6 |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 156 Регистрация: 11.12.2008 Репутация: нет Всего: нет |
Я наверно не правильно вопрос поставил. Как вычислить 32-битные low и high части от 64-битного числа. Т.е. нужна функция:
|
|||
|
||||
volatile |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2107 Регистрация: 7.1.2011 Репутация: 4 Всего: 85 |
||||
|
||||
x8m6 |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 156 Регистрация: 11.12.2008 Репутация: нет Всего: нет |
Вот на этом примере почему то не работает:
Если вместо 11386655755 поставить 77356848298 то все нормально вычисляется. В чем дело? |
|||
|
||||
borisbn |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4875 Регистрация: 6.2.2010 Где: Ростов-на-Дону Репутация: 2 Всего: 135 |
замени везде int на unsigned int и всё будет ОК.
http://liveworkspace.org/code/060f4e9f7f42...8dd562dc55a5885 Дело в том, что при сдвиге знакового числа заполнение "слева" идёт не нулями, а знаковым битом. Грубо говоря, в int не 32 значащих бита, а 31 и один - для определения знака числа. Ты же пытаешься записать в int все 32 бита, и у тебя получается, что 31 записываются как значащие, а один (изначально тоже значащий) - как знак. Это сообщение отредактировал(а) borisbn - 24.1.2012, 10:52 -------------------- Женщины отличаются от программистов тем, что у них чары состоят из стрингов |
|||
|
||||
x8m6 |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 156 Регистрация: 11.12.2008 Репутация: нет Всего: нет |
Еще очень нужна функция целочисленного деления:
|
|||
|
||||
borisbn |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4875 Регистрация: 6.2.2010 Где: Ростов-на-Дону Репутация: 2 Всего: 135 |
res = num / divider; // res - целая часть от деления num на divider при условии, что и num и divider - целые res = num % divider; // res - остаток от деления num на divider x8m6, скажи честно, ты хоть одну книгу открыл по Си++ ? -------------------- Женщины отличаются от программистов тем, что у них чары состоят из стрингов |
|||
|
||||
![]() ![]() ![]() |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Visual C++/MFC/WTL | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |