Переменная — это не что иное, как имя, данное области памяти, которой могут манипулировать наши программы. Каждая переменная в D имеет определенный тип, который определяет размер и расположение памяти переменной; диапазон значений, которые могут быть сохранены в этой памяти; и набор операций, которые могут быть применены к переменной.
Имя переменной может состоять из букв, цифр и символа подчеркивания. Он должен начинаться либо с буквы, либо с подчеркивания. Прописные и строчные буквы различны, потому что D чувствителен к регистру. Основываясь на базовых типах, описанных в предыдущей главе, будут следующие базовые типы переменных:
Sr.No. | Тип и описание |
---|---|
1 |
голец Обычно один октет (один байт). Это целочисленный тип. |
2 |
ИНТ Наиболее натуральный размер целого числа для машины. |
3 |
поплавок Значение с плавающей запятой одинарной точности. |
4 |
двойной Значение с плавающей запятой двойной точности. |
5 |
недействительным Представляет отсутствие типа. |
голец
Обычно один октет (один байт). Это целочисленный тип.
ИНТ
Наиболее натуральный размер целого числа для машины.
поплавок
Значение с плавающей запятой одинарной точности.
двойной
Значение с плавающей запятой двойной точности.
недействительным
Представляет отсутствие типа.
Язык программирования D также позволяет определять различные другие типы переменных, такие как перечисление, указатель, массив, структура, объединение и т. Д., Которые мы рассмотрим в следующих главах. Для этой главы давайте изучим только основные типы переменных.
Определение переменной в D
Определение переменной сообщает компилятору, где и сколько места нужно создать для переменной. Определение переменной определяет тип данных и содержит список из одной или нескольких переменных этого типа следующим образом:
type variable_list;
Здесь тип должен быть допустимым типом данных D, включая char, wchar, int, float, double, bool или любой определенный пользователем объект и т. Д., А variable_list может состоять из одного или нескольких имен идентификаторов, разделенных запятыми. Некоторые действительные объявления показаны здесь —
int i, j, k; char c, ch; float f, salary; double d;
Линия int i, j, k; оба объявляют и определяют переменные i, j и k; который инструктирует компилятор создавать переменные с именами i, j и k типа int.
Переменные могут быть инициализированы (им присвоено начальное значение) в их объявлении. Инициализатор состоит из знака равенства, за которым следует постоянное выражение:
type variable_name = value;
Примеры
extern int d = 3, f = 5; // declaration of d and f. int d = 3, f = 5; // definition and initializing d and f. byte z = 22; // definition and initializes z. char x = 'x'; // the variable x has the value 'x'.
Когда переменная объявляется в D, для нее всегда устанавливается «инициализатор по умолчанию», к которому можно обращаться вручную как T.init, где T — тип (например, int.init ). Инициализатором по умолчанию для целочисленных типов является 0, для логических значений false и для чисел с плавающей точкой NaN.
Объявление переменной в D
Объявление переменной дает гарантию компилятору, что существует одна переменная с заданным типом и именем, так что компилятор приступает к дальнейшей компиляции, не требуя полной информации о переменной. Объявление переменной имеет смысл только во время компиляции, компилятору требуется фактическое объявление переменной во время компоновки программы.
пример
Попробуйте следующий пример, где переменные были объявлены в начале программы, но определены и инициализированы внутри основной функции —
import std.stdio; int a = 10, b = 10; int c; float f; int main () { writeln("Value of a is : ", a); /* variable re definition: */ int a, b; int c; float f; /* Initialization */ a = 30; b = 40; writeln("Value of a is : ", a); c = a + b; writeln("Value of c is : ", c); f = 70.0/3.0; writeln("Value of f is : ", f); return 0; }
Когда приведенный выше код компилируется и выполняется, он дает следующий результат —
Value of a is : 10 Value of a is : 30 Value of c is : 70 Value of f is : 23.3333
Lvalues и Rvalues в D
Есть два вида выражений в D —
-
lvalue — выражение, являющееся lvalue, может отображаться как слева или справа от присваивания.
-
rvalue — выражение, являющееся rvalue, может появляться справа, но не слева от присваивания.
lvalue — выражение, являющееся lvalue, может отображаться как слева или справа от присваивания.
rvalue — выражение, являющееся rvalue, может появляться справа, но не слева от присваивания.
Переменные являются lvalues и могут отображаться в левой части назначения. Числовые литералы являются r-значениями и поэтому не могут быть назначены и не могут отображаться слева. Следующее утверждение действительно:
int g = 20;
Но следующее не является допустимым утверждением и приведет к ошибке времени компиляции: