D (编程语言)/d2/类型,续
外观
< D (编程语言)
(从 D (编程语言)/d2/第 4 课 重定向)在本课中,您将看到所有其他类型。其中许多类型您会很熟悉,但请注意,C 和 D 在其内置类型中存在很多差异。
import std.stdio;
void main()
{
bool a; // default initialized to false
a = 1;
a = false;
uint aa = 53; //unsigned int
ulong bb = 10395632; //unsigned long
short cc = 100;
ushort dd = cc; //dd == 100
byte b = 0x5E;
writeln(b); // prints 94
b = 110;
ubyte c = 255; //maximum value for a ubyte
assert(c == ubyte.max);
short d = 50;
long e = d;
writeln(e); // 50
float f; // default initialized to float.nan
float g = 3.13;
double h = g * 2.5;
// largest hardware implemented floating-point
real i = 373737373737377373.0;
writeln(i); // 3.73737e+17
// these numbers are not real:
idouble j; //default = double.nan * 1.0i
ifloat k;
ireal l;
cfloat m = 5 + 32.325i; // a complex number
// unsigned 8-bit UTF-8
char n; // default initialized to 0xFF
n = 'm';
writeln(n); // m
// unsigned 16-bit UTF-16
wchar o; // default = 0xFFFF
// unsigned 32-bit UTF-32
dchar p; // default = 0x0000FFFF
}
使用 assert
允许您检查某个表达式是否为真。==
表示等于(不要与 =
混淆,=
用于赋值变量)。检查在运行时进行,如果括号内的任何内容计算结果为假,则会发生断言错误,并且程序将终止。
void main()
{
bool a = true;
assert(a);
assert(2346924); // anything that's not 0 or false
// assert(false); Assertion failure
int i = 4628;
assert(i == 4628); // (i == 4628) evaluates to true
assert(i != 4528); // (i != 4528) evaluates to true
assert(i >= 0); // yes, i is greater or equal to 0
}
类型具有默认初始化器。这意味着,如果它们被声明但没有被分配任何值,它们默认将等于某些东西。
int i; //i = int.init
assert(int.init == 0); // i is definitely 0
float b = float.init; //b = float.nan
可以从任何类型或对象查询属性。当查询类型或对象的属性时,属性名称和标识符之间有一个点。
type.property
任何类型的 init
属性包含默认情况下初始化此类型对象的 value。对于数字类型,您可以使用其各自的属性找到最小值和最大值:type.min
和 type.max
。您还可以找到类型在内存中的大小:type.sizeof
。如果您想要声明但不想初始化某些东西,您可以执行此操作
int i = void;
然后,i 未初始化;它的值是未定义的垃圾。
D 允许您以几种有用的基数和形式编写数字。因此,如果您想将 A4 的十六进制数加到一百万三千一百三十七千六百三十七和 1011010101 的二进制数,您可以编写以下内容
import std.stdio;
void main()
{
writeln(0xA4 + 1_113_637 + 0b10_11_010101);
// hex numbers are prefixed by 0x
// binary numbers by 0b
// the answer is 1114526
}
请注意,数字中间的下划线会被完全忽略。它们是 100% 可选的,并且对于格式化长数字很有用。
- 您可以查看 此参考 以获取有关 D 的词法语法的更多信息。很快就会有一课写出有关此主题的最新信息。