Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2007.01.28;
Скачать: CL | DM;

Вниз

Большие числа.   Найти похожие ветки 

 
Влад   (2007-01-08 18:17) [0]


var A:uint64;
begin
A:= $B7E151628AED2A6B; //[Error] Constant expression violates subrange bounds

Как я понял, константа слишком большая.
Однако:

var A:int64;
begin
A:= $B7E151628AED2A6B; //[Error] Constant expression violates subrange bounds

ошибки не вызывает. Почему? Ведь uint64 измеряется от 0 до 2^64-1 (а число в этот промежуток входит). Как с этим бороться?


 
Влад   (2007-01-08 18:17) [1]

Второй код неправильно напечатал.

var A:int64;
begin
A:= $B7E151628AED2A6B;


 
sniknik ©   (2007-01-08 18:30) [2]

var A:uint64;
begin
A:= uint64($B7E151628AED2A6B);
//чтобы не восприняло константу как отрицательный int64


 
Влад   (2007-01-08 18:33) [3]

спасибо.


 
Влад   (2007-01-08 18:39) [4]

Только вот в Watches наблюдаю A все равно как отрицательное. Или это Watches неправильно отображает uint64 числа?


 
sniknik ©   (2007-01-08 19:02) [5]

там оно как интеджер, знаковое представлено (ну не "развит" еще тип ;), может в более поздней дельфе посмотреть),
попробуй арифметические операции с ним, можно увидеть что результат как от беззнакового.  (ну если например поделить на достаточно большое число, чтобы старший бит который у знаковых за знак отвечает освободился, то увидишь неотрицательное и при преобразовании к uint64. а ведь деление на знак не влияет)

но вот что плохо, при любом приведении и передачи в знаковый параметр оно автоматом его поменяет ;(, и ошибок не выдаст.


 
sniknik ©   (2007-01-08 19:03) [6]

> и при преобразовании к uint64
ошибка копи пасте надо читать "к int64"


 
Влад   (2007-01-08 19:12) [7]


> может в более поздней дельфе посмотреть


А какая самая последняя? У меня 7.0 Build 4.453


 
sniknik ©   (2007-01-08 19:22) [8]

2006



Страницы: 1 вся ветка

Текущий архив: 2007.01.28;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.031 c
2-1168546687
CaLL|ok
2007-01-11 23:18
2007.01.28
заполнение ПрогрессБара за заданный промежуток времени


2-1168124906
koha
2007-01-07 02:08
2007.01.28
Изменение в MassageDlg надписей на русские под Delphi2006


2-1168523899
Derty_Edd
2007-01-11 16:58
2007.01.28
VCL - TnT (разницы нет)


2-1168427926
Mishenka
2007-01-10 14:18
2007.01.28
Чем отличаются события формы OnClose и OnCloseQuery ?


6-1156437318
i-s-v
2006-08-24 20:35
2007.01.28
Прослушка сети