Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: C30 PIC24H проблема с long long типами (64 бит)
Форум разработчиков электроники ELECTRONIX.ru > Сайт и форум > В помощь начинающему > Программирование
etryweuvbc
Описание проблемы:

при создании переменной больше 32 бит

Код
unsigned long long mul1=0x1FFFFFFFF;


выдает warning:

Код
warning: integer constant is too large for 'long' type


нигде не видел подобных ограничений для С30.

В чем проблема?
Облазил все настройки компилятора, ничего не нашел,
что могло бы быть связано с данной проблемой.
zltigo
Начните с изучения языка 'C'.
0x1FFFFFFFFLL
0x1FFFFFFFFULL
testerplus
Цитата(zltigo @ Sep 17 2009, 11:36) *
Начните с изучения языка 'C'.
0x1FFFFFFFFLL


Для unsigned лучше ULL. Если константа в HEX, то все равно, а если в DEC, то опять будет warning при выходе за пределы 63-битного числа.

(Упс... Опоздал.)
etryweuvbc
Цитата(zltigo @ Sep 17 2009, 10:36) *
Начните с изучения языка 'C'.
0x1FFFFFFFFLL
0x1FFFFFFFFULL

не работает. Пример:

Код
    
unsigned long long mul1=0x1FFFFFFFFULL;
unsigned long long mul2=0x100;
unsigned long long res=mul1*mul2;


на выходе имеем(смотрю в отладчике MPLAB REAL ICE):
Код
mul1=0xFFFFFFFF;
mul2=0x100;
res=0xFFFFFF00;


т.е. работает как с long-ами, а не с long long-ами
zltigo
Цитата(etryweuvbc @ Sep 17 2009, 09:50) *
не работает. Пример:

Во-первых, если warning исчез, то РАБОТАЕТ.
Во-вторых - смотрите, что дальше написали, и что там "отладчики" умеют показывать, если результат якобы не устраивает.
etryweuvbc
Цитата(zltigo @ Sep 17 2009, 10:52) *
Во-вторых - смотрите, что дальше написали, и что там "отладчики" умеют показывать, если результат якобы не устраивает.


нда... похоже проблема в том что отладчик(MPLAB) некорректно отображает большие числа
в студии отображаются максимум 32-бита...
но на самом деле все операции над long long корректны
testerplus
Цитата(etryweuvbc @ Sep 17 2009, 12:12) *
нда... похоже проблема в том что отладчик(MPLAB) некорректно отображает большие числа
в студии отображаются максимум 32-бита...
но на самом деле все операции над long long корректны


В окне watch правой кнопкой мыши на переменной -> Properties -> выбираешь Size = 64 бита
etryweuvbc
Цитата(testerplus @ Sep 17 2009, 11:24) *
В окне watch правой кнопкой мыши на переменной -> Properties -> выбираешь Size = 64 бита

Семен Семеныч... biggrin.gif

вот оно где загвоздка то была
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.