D(编程语言)/d2/类型和声明
外观
< D(编程语言)
(从 D(编程语言)/d2/第 2 课 重定向)在本课中,您将学习如何声明和使用变量。
import std.stdio;
int b;
void main()
{
b = 10;
writeln(b); // prints 10
int c = 11;
// int c = 12; Error: declaration c is already defined
string a = "this is a string";
writeln(a); // prints this is a string
// a = 1; Error, you can't assign an int to a string variable
int d, e, f; // declaring multiple variables is allowed
}
import std.stdio;
void main()
{
int hot_dogs = 10;
int burgers = 20;
auto total = hot_dogs + burgers;
string text = burgers + " burgers"; // Error! Incompatible types int and string
writeln(hot_dogs, " hot dogs and ", burgers, " burgers");
writeln(total, " total items");
}
在本课中,我们看到了变量的声明和赋值。
声明变量的语法是
type identifier;
您也可以在同一时间分配一个值。
type identifier = value;
D 允许您在同一行中声明多个相同类型的变量。如果您写
int i, j, k = 30;
i、j 和 k 都被声明为 int,但只有 k 被赋值为 30。它与以下代码相同
int i, j;
int k = 30;
如果声明以 auto
开头,则编译器将自动推断声明变量的类型。事实上,它不必是 auto
。任何存储类都可以使用。存储类是 D 中内置的构造,例如 auto
或 immutable
。此代码声明了一个不可变的变量 a,其值为 3。编译器会确定其类型为 int
。
immutable a = 3;
您将在后面学习更多关于存储类的知识。
writeln
是一个非常有用的函数,用于写入 stdout。writeln
的一个特殊之处在于:它可以接受任何类型的变量。它还可以接受无限数量的参数。例如
writeln("I ate ", 5, " hot dogs and ", 2, " burgers.");
// prints I ate 5 hot dogs and 2 burgers.
别担心,writeln
并没有什么神奇之处。write
家族中的所有函数都是使用 100% 有效的 D 代码在 stdio.d 中实现的,stdio.d 位于 Phobos 标准库中。
- 类似这样的语法:
int i, j, k = 1, 2, 3;
是不允许的。 - 类似这样的语法:
int, string i, k;
也是不允许的。 auto
不是一个类型。您不能这样做:auto i;
因为编译器无法推断 i 的类型。auto
仅仅是一个存储类,它告诉编译器从您在同一行中为其分配的值中推断出类型。