跳转到内容

D(编程语言)/d2/类型和声明

25% developed
来自维基教科书,开放世界中的开放书籍

第 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 中内置的构造,例如 autoimmutable。此代码声明了一个不可变的变量 a,其值为 3。编译器会确定其类型为 int

immutable a = 3;

您将在后面学习更多关于存储类的知识。

更多关于 writeln

[编辑 | 编辑源代码]

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 仅仅是一个存储类,它告诉编译器从您在同一行中为其分配的值中推断出类型。
华夏公益教科书