|
@@ -307,7 +307,7 @@ auto b = q{ № }; // Ошибка! "№" - не токен язы
|
|
auto a = q{ __EOF__ }; // Ошибка! __EOF__ - не токен, а конец файла
|
|
auto a = q{ __EOF__ }; // Ошибка! __EOF__ - не токен, а конец файла
|
|
```
|
|
```
|
|
|
|
|
|
-Также D определяет еще один вид строковых литералов – шестнадцатеричную строку, то есть строку, состоящую из шестнадцатеричных цифр и пробелов (пробелы игнорируются) между `x"` и `"`. Шестнадцатеричные строки могут быть полезны для определения сырых данных; компилятор не пытается интерпретировать содержимое литералов никак знаки Юникода, ни как-то еще – только как шестнадцатеричные цифры. Пробелы внутри строк игнорируются.
|
|
|
|
|
|
+Также D определяет еще один вид строковых литералов – шестнадцатеричную строку, то есть строку, состоящую из шестнадцатеричных цифр и пробелов (пробелы игнорируются) между `x"` и `"`. Шестнадцатеричные строки могут быть полезны для определения сырых данных; компилятор не пытается интерпретировать содержимое литералов ни как знаки Юникода, ни как-то еще – только как шестнадцатеричные цифры. Пробелы внутри строк игнорируются.
|
|
|
|
|
|
```d
|
|
```d
|
|
auto
|
|
auto
|
|
@@ -934,19 +934,11 @@ foreach (ref row; matrix)
|
|
|
|
|
|
### 2.3.10. Сдвиг
|
|
### 2.3.10. Сдвиг
|
|
|
|
|
|
-В языке D есть три операции сдвига, в каждой из которых участвуют
|
|
|
|
-два целочисленных операнда: `a << b`, `a >> b` и `a >>> b`. Во всех случаях
|
|
|
|
-значение `b` должно иметь тип без знака; значение со знаком необходимо
|
|
|
|
-привести к значению беззнакового типа (разумеется, предварительно
|
|
|
|
-убедившись, что `b >= 0`; результат сдвига на отрицательное количество
|
|
|
|
-разрядов непредсказуем). `a << b` сдвигает a влево (то есть в направлении
|
|
|
|
|
|
+В языке D есть три операции сдвига, в каждой из которых участвуют два целочисленных операнда: `a << b`, `a >> b` и `a >>> b`. Во всех случаях значение `b` должно иметь тип без знака; значение со знаком необходимо привести к значению беззнакового типа (разумеется, предварительно убедившись, что `b >= 0`; результат сдвига на отрицательное количество разрядов непредсказуем). `a << b` сдвигает a влево (то есть в направлении
|
|
самого старшего разряда `a`) на `b` бит, а `a >> b` сдвигает `a` вправо на `b` бит.
|
|
самого старшего разряда `a`) на `b` бит, а `a >> b` сдвигает `a` вправо на `b` бит.
|
|
Если `a` – отрицательное число, знак после сдвига сохраняется.
|
|
Если `a` – отрицательное число, знак после сдвига сохраняется.
|
|
|
|
|
|
-`a >>> b` – это беззнаковый сдвиг независимо от знаковости `a`. Это означа
|
|
|
|
-ет, что ноль гарантированно займет самый старший разряд `a`. Проил
|
|
|
|
-люстрируем сюрпризы, которые готовит применение операции сдвига
|
|
|
|
-к числам со знаком:
|
|
|
|
|
|
+`a >>> b` – это беззнаковый сдвиг независимо от знаковости `a`. Это означает, что ноль гарантированно займет самый старший разряд `a`. Проиллюстрируем сюрпризы, которые готовит применение операции сдвига к числам со знаком:
|
|
|
|
|
|
```d
|
|
```d
|
|
int a = -1; // То есть 0xFFFF_FFFF
|
|
int a = -1; // То есть 0xFFFF_FFFF
|