只是为了好奇,
为什么在Delphi中,如果我们通过以下方式定义一个空char:
a:Char;
a:='';
我们收到错误:不兼容的类型:'字符'和'字符串'
但是,如果我们放置
a:='a';
会没事的?
是否有必要通过以下方式定义空字符:a:=#0
?
答案 0 :(得分:24)
char是单个(即恰好一个)字符。所以'a','∫'和'⌬'都可以,但不是'ab'(两个字符的字符串),'Hello World!' (十二个字符的字符串)或''(零字符串)。
但是,NULL字符(#0)是一个像任何其他字符一样的字符。
此外,字符数据类型实现为一个单词(在现代版本的Delphi中),即两个字节。如果将所有这些值0,1,...,2 ^ 16 - 1用于真实字符,那么您将如何在世界中代表您的“空字符”?
答案 1 :(得分:17)
没有空char
这样的东西。 char
必须有值。它是一种序数类型,一种简单的值类型。就像整数一样,总是有一个值,char
也是如此。
值#0
不是空的char
,它是值为0的字符,通常称为NUL
。