Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2003.02.06;
Скачать: [xml.tar.bz2];

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.013 c
1-15634
badaxe
2003-01-29 14:00
2003.02.06
Hot Key


1-15599
@andrew
2003-01-28 11:22
2003.02.06
А как закрыть форму с нужным ModalResult?


1-15666
pl_quad
2003-01-29 18:19
2003.02.06
TCustomGrid


3-15403
Ч
2003-01-21 16:59
2003.02.06
Работа с датой и ЕditMask


3-15511
Rule
2003-01-21 10:51
2003.02.06
Можно ли разделять права доступа в IB6(FB1)!





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский