реклама на сайте
подробности

 
 
 
Reply to this topicStart new topic
> C30 PIC24H проблема с long long типами (64 бит), обрезка 64-битных типов данных в С30 PIC24H
etryweuvbc
сообщение Sep 17 2009, 07:24
Сообщение #1





Группа: Участник
Сообщений: 5
Регистрация: 16-09-09
Пользователь №: 52 411



Описание проблемы:

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

Код
unsigned long long mul1=0x1FFFFFFFF;


выдает warning:

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


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

В чем проблема?
Облазил все настройки компилятора, ничего не нашел,
что могло бы быть связано с данной проблемой.
Go to the top of the page
 
+Quote Post
zltigo
сообщение Sep 17 2009, 07:36
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



Начните с изучения языка 'C'.
0x1FFFFFFFFLL
0x1FFFFFFFFULL


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
testerplus
сообщение Sep 17 2009, 07:44
Сообщение #3


Участник
*

Группа: Участник
Сообщений: 54
Регистрация: 7-08-08
Из: SPb
Пользователь №: 39 471



Цитата(zltigo @ Sep 17 2009, 11:36) *
Начните с изучения языка 'C'.
0x1FFFFFFFFLL


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

(Упс... Опоздал.)

Сообщение отредактировал testerplus - Sep 17 2009, 07:45
Go to the top of the page
 
+Quote Post
etryweuvbc
сообщение Sep 17 2009, 07:50
Сообщение #4





Группа: Участник
Сообщений: 5
Регистрация: 16-09-09
Пользователь №: 52 411



Цитата(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-ами

Сообщение отредактировал etryweuvbc - Sep 17 2009, 07:57
Go to the top of the page
 
+Quote Post
zltigo
сообщение Sep 17 2009, 07:52
Сообщение #5


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



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

Во-первых, если warning исчез, то РАБОТАЕТ.
Во-вторых - смотрите, что дальше написали, и что там "отладчики" умеют показывать, если результат якобы не устраивает.


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
etryweuvbc
сообщение Sep 17 2009, 08:12
Сообщение #6





Группа: Участник
Сообщений: 5
Регистрация: 16-09-09
Пользователь №: 52 411



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


нда... похоже проблема в том что отладчик(MPLAB) некорректно отображает большие числа
в студии отображаются максимум 32-бита...
но на самом деле все операции над long long корректны
Go to the top of the page
 
+Quote Post
testerplus
сообщение Sep 17 2009, 08:24
Сообщение #7


Участник
*

Группа: Участник
Сообщений: 54
Регистрация: 7-08-08
Из: SPb
Пользователь №: 39 471



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


В окне watch правой кнопкой мыши на переменной -> Properties -> выбираешь Size = 64 бита
Go to the top of the page
 
+Quote Post
etryweuvbc
сообщение Sep 17 2009, 08:30
Сообщение #8





Группа: Участник
Сообщений: 5
Регистрация: 16-09-09
Пользователь №: 52 411



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

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

вот оно где загвоздка то была
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 18th July 2025 - 14:49
Рейтинг@Mail.ru


Страница сгенерированна за 0.01428 секунд с 7
ELECTRONIX ©2004-2016