只是出於好奇定義空字符,如何在Delphi
爲什麼在Delphi中,如果我們通過定義一個空字符:
a:Char;
a:='';
我們得到一個錯誤:不兼容的類型:「字符」和'串'
但是,如果我們把
a:='a';
沒事的?
是否需要定義一個空字符:a:=#0
?
只是出於好奇定義空字符,如何在Delphi
爲什麼在Delphi中,如果我們通過定義一個空字符:
a:Char;
a:='';
我們得到一個錯誤:不兼容的類型:「字符」和'串'
但是,如果我們把
a:='a';
沒事的?
是否需要定義一個空字符:a:=#0
?
char是單個字符(也就是一個字符)。所以'a','∫'和'⌬'都可以,但不是'ab'(兩個字符的字符串),'Hello World!' (十二個字符的字符串)或''(一個零字符的字符串)。
但是,NULL字符(#0)是任何其他字符。
此外,字符數據類型被實現爲一個字(在Delphi的現代版本中),也就是兩個字節。如果所有這些值爲0,1,...,2^16 - 1都用於真實角色,那麼您將如何在世界中代表您的'空白字符'?
+1('零字符)。它說服了我! – Zeina 2012-03-08 13:49:31
@Zeina不要忘記接受答案... – ComputerSaysNo 2012-03-08 13:52:10
你的權利與最後編輯的短語,我的意思是空字符空字符,但我認爲,當我放置:='',編譯器會把它作爲#0默認情況下,並沒有期望這樣的錯誤,所以我想知道爲什麼是這樣的。提前致謝! – Zeina 2012-03-08 13:54:07
沒有空的char
這樣的東西。 A char
必須具有價值。它是一種序數類型,簡單的數值類型。就像一個整數一樣,總是有一個值,char
也是如此。
值#0
不是空的char
,它是值爲0的字符,俗稱NUL
。
在帕斯卡這是'序數'類型。 – OnTheFly 2012-03-08 14:21:35
在.net世界中,你可以有一個「空」Char,因爲他們有Nullable類型(通過它們的泛型系統)。在數據庫世界中,數據庫字段可以是Nullable,但是所有的Delphi'Ordinal'類型,包括'Integer','Char','Byte'等等,它們可能有一些標記(標記)或零值例如,Char的#0)不能爲「空」或「空」。由於字符串和數組不是序數類型,因此規則是不同的。一個字符串就像一個「動態字符數組」。 – 2012-03-08 14:13:29
你對「常量表達式」感到困惑。它的類型是'string',與'char'類型不兼容。相反''a''是兼容的。所以,你**有**來定義**「空字符」約定。 – OnTheFly 2012-03-08 14:29:46