a亚洲精品_精品国产91乱码一区二区三区_亚洲精品在线免费观看视频_欧美日韩亚洲国产综合_久久久久久久久久久成人_在线区

首頁 > 編程 > Delphi > 正文

Delphi中布爾類型辨析

2019-11-18 18:48:08
字體:
供稿:網(wǎng)友
Delphi中預定義的布爾類型有四種:Boolean ,ByteBool,WordBool,LongBool。其中,Boolean 類型是首選布爾類型,其余三種是為其它編程語言和Windows 環(huán)境提供兼容性支持。這些布爾類型在使用上大同小異,但如果混淆使用將可能會有意外結果。

  現(xiàn)做簡單辨析供大家參考。
  

一、從資源占用的角度進行比較
  一項Boolean 類型的數(shù)據(jù)占用 1字節(jié)的內(nèi)存;

  一項ByteBool類型的數(shù)據(jù)占用 1字節(jié)的內(nèi)存;

  一項WordBool類型的數(shù)據(jù)占用 2字節(jié)的內(nèi)存;

  一項LongBool類型的數(shù)據(jù)占用 4字節(jié)的內(nèi)存。

  如果開發(fā)者在進行程序設計時將構造一種含有布爾數(shù)據(jù)類型的結構類型,那么在資源占用方面將有所考慮。盡管這些數(shù)據(jù)類型之間是可以相互賦值的,但某些特殊情況下是有區(qū)別的。首先看下面的語句:

  type

   ByteBoolFile = file of ByteBool;

   LongBoolFile = file of LongBool;

  這里,如果在這兩中類型文件中存儲相同數(shù)量的布爾值,其文件大小是不同的。而對同一物理文件按照這兩種類型文件分別讀取數(shù)據(jù),其結果更是相去甚遠。

  下面是比較ByteBool和LongBool的一段程序,得到的文件 test1.bin和 test2.bin的文件尺寸分別為 4字節(jié)和16字節(jié)。

  PRocedure CompareByteBoolWithLongBool;

  const

   FName1 = 'c: est1.bin';

   FName2 = 'c: est2.bin';

  type

   ByteBoolFile = file of ByteBool;

   LongBoolFile = file of LongBool;

  var

   BF: ByteBoolFile;

   LF: LongBoolFile;

   B: Boolean;

  begin

   B := False;

   AssignFile(BF, FName1);

   Rewrite(BF);

   Write(BF, B, B, B, B);

   CloseFile(BF);

   AssignFile(LF, FName2);

   Rewrite(LF);

   Write(LF, B, B, B, B);

   CloseFile(LF);

  end;

  有興趣的朋友可以在此基礎上再比較一下讀取數(shù)據(jù)的區(qū)別,你會有更奇特的發(fā)現(xiàn)。

  

二、從布爾值的操作角度進行比較
  在Delphi中,布爾值只能被賦予預定義的常量True和 False之一。上述四種布爾數(shù)據(jù)類型有如下關系:

  Boolean ByteBool,WordBool,LongBool

  False < True False <> True

  Ord(False) = 0 Ord(False) = 0

  Ord(True) = 1 Ord(True) <> 0

  Succ(False) = True Succ(False) = True

  Pred(True) = False Pred(False) = True

  不難看出,Boolean 類型的有序的,而其它三種布爾數(shù)據(jù)類型是無序的。下面的程序給出了其中的部分區(qū)別:

  procedure CompareBooleanWithLongBool;

  var

   B: Boolean;

   LB: LongBool;

  begin

   B := False;

   LB := False;

   if Ord(B) = Ord(LB) then

    ShowMessage('Ord(B) = Ord(LB) [B = LB = False]') //將被執(zhí)行

   else

    ShowMessage('Ord(B) <> Ord(LB) [B = LB = False]');

   B := True;

   LB := True;

   if Ord(B) = Ord(LB) then

    ShowMessage('Ord(B) = Ord(LB) [B = LB = True]')

   else

    ShowMessage('Ord(B) <> Ord(LB) [B = LB = True]'); //將被執(zhí)行

   ShowMessage('Ord(B) = ' + IntToStr(Ord(B)));     //一定是 1

   ShowMessage('Ord(LB) = ' + IntToStr(Ord(LB)));    //可能是-1

  end;

上一篇:在Delphi中實現(xiàn)動態(tài)字幕

下一篇:用DELPHI給OICQ動手術(二)

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
學習交流
熱門圖片

新聞熱點

疑難解答

圖片精選

網(wǎng)友關注

主站蜘蛛池模板: 日本一区二区三区四区不卡视频 | 欧美日韩中文在线观看 | 天天射影院| 欧美成人一区二区三区片免费 | 越南性xxxx精品hd | 日韩激情一区二区 | 成人福利av | 草草影院在线观看 | 成人h动漫免费观看网站 | 国产日韩精品一区二区 | 久久人人爽人人爽 | 和尚风流一级艳片 | 免费xxxx大片国产在线 | 超级碰在线视频 | 日韩艹逼视频 | 黄页网站大全在线观看 | 国产精品一区网站 | 欧美18免费视频 | 在线观看国产精品一区 | 日韩精品一区在线 | 久久综合一区二区三区 | 色网站在线 | 欧美精品在线视频 | 久久久久久亚洲精品中文字幕 | 五月激情站 | 一区二区三区四区在线 | av在线成人 | 91精品在线播放 | 精品无人乱码一区二区三区 | 久久久久久国产精品 | 日韩一区二区三区在线观看 | 日韩在线资源 | 日韩不卡 | 91久久国产综合久久 | 日韩成人在线一区 | 污视频网站在线看 | 欧美日本韩国一区二区三区 | 国产成人精品大尺度在线观看 | 日夜夜精品 | 久久久精品国产 | 91久色 |