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

Вниз

Типы переменных   Найти похожие ветки 

 
SergeN   (2003-01-28 15:29) [0]

Привет!
Такая ситуация:
Переменная i принимает два значения:1 и -1.
Какой тип лучше использовать?


 
gsu ©   (2003-01-28 15:31) [1]

boolean
1..-1
integer ?


 
han_malign ©   (2003-01-28 15:33) [2]

Regardless of the state of the $A directive, variables and typed constants are always aligned for optimal access.
- так что, для Intel>386 архитектуры, по любому 4-е байта занимает.


 
Anatoly Podgoretsky ©   (2003-01-28 15:33) [3]

Integer


 
SergeN   (2003-01-28 15:37) [4]

Спасибо! Просто беспокоюсь за ресурсы...


 
Юрий Зотов ©   (2003-01-28 15:41) [5]

> han_malign © (28.01.03 15:33)
> ...are always aligned for optimal access
> по любому 4-е байта занимает.

Какое отношение имеет выравнивание к размеру? До сих пор я полагал, что никакого. Вероятно, один из нас неправ.


> SergeN (28.01.03 15:29)
> Какой тип лучше использовать?

Смотря что значит "лучше". Если для скорости, то integer, а если для размера, то однобайтовый (SmallInt или ShortInt - точно не помню, посмотрите в справке).


 
bis ©   (2003-01-28 15:45) [6]

можно всего 2 бита использовать под это ...
только зачем ?


 
Shadow ©   (2003-01-28 15:45) [7]

asm %))


 
Anatoly Podgoretsky ©   (2003-01-28 15:48) [8]

Так не спрашивают как защифровать, упаковать два абстрактных значения, а конкретно в чем хринить именно единиуц и минус единицу. Для это походят именно чисто целочисленные типы.


 
Chubais ©   (2003-01-28 15:51) [9]


> можно всего 2 бита использовать под это ...
> только зачем ?

гыыы
а почему это 2?
по-моему, одного хватит...


 
passm ©   (2003-01-28 16:08) [10]

type
TVerySmallInteger = -1..1;
Использует 1 байт.


 
han_malign ©   (2003-01-28 16:12) [11]

2 Юрий Зотов © (28.01.03 15:41)
Немного попутал:
program Align;
{$APPTYPE CONSOLE}
{$A-}
uses Windows;
type TT=class
private
b: byte;
w: word;
dw: DWORD;
public
function ByteSz: integer;
function WordSz: integer;
end;

function TT.ByteSz: integer;
begin
Result:=DWORD(@w)-DWORD(@b);
end;

function TT.WordSz: integer;
begin
Result:=DWORD(@dw)-DWORD(@w);
end;

var
b: byte;
w: word;
dw: DWORD;
begin
with TT.Create do begin
Writeln("Byte size - ",ByteSz);
Writeln("Word size - ",WordSz);
Free;
end;
Writeln("Local Byte size - ",DWORD(@w)-DWORD(@b));
Writeln("Local Word size - ",DWORD(@dw)-DWORD(@w));
end.


Display:
Byte size - 1
Word size - 2
Local Byte size - 2
Local Word size - 2

Для {$A+} (по умолчанию) соответственно
Byte size - 2
Word size - 2
Local Byte size - 2
Local Word size - 2

З.Ы. Так что лучше SmallInt - если с выравниванием, или ShortInt - если без...


 
Palladin ©   (2003-01-28 16:12) [12]

2 passm
> Использует 1 байт
shortint тобишь


 
REA ©   (2003-01-28 16:19) [13]

Типа так лучше читать, фиг знает сколько байт используется:

TGoodReadableSet = (grPositive, grNegative);
IntValues: Array[TGoodRadableSet] = (-1, 1);

A: TGoodReadableSet;

A := grPositive;
I := IntVlaues[A];


 
passm ©   (2003-01-28 17:05) [14]

Palladin © (28.01.03 16:12)> Он самый.
Для уверенности можно посмотреть:
type
TVerySmallInteger = -1..1;
...
LabelX.Caption:= IntToStr(SizeOf(TVerySmallInteger))
...
Относится и к остальным числовым типам/переменным.


 
Юрий Зотов ©   (2003-01-28 17:06) [15]

> han_malign © (28.01.03 16:12)

Интересный тест. Правда, все это есть и в справке...

Знаете, а все-таки размер однобайтовой переменной - ровно 1 байт. Честное слово. Независимо от выравнивания. И то, что после нее идет неиспользуемый участок памяти, этот размер не увеличивает.

То же касается и двубайтовых, да и любых других переменных.



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

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

Наверх




Память: 0.5 MB
Время: 0.019 c
3-15517
Наташа
2003-01-20 18:04
2003.02.06
первичный ключ


14-15881
Kudatsky
2003-01-20 10:49
2003.02.06
Нужен сервер, работающий с DBF-файлами


14-15850
ivansv
2003-01-19 03:42
2003.02.06
Как вывести на экране текст в KOI8-R


3-15521
pave1
2003-01-19 20:47
2003.02.06
Создание индекса для dBase


1-15632
icWasya
2003-01-23 17:59
2003.02.06
{$Link