Операторы
Эта страница переведена сообществом на русский язык, но нуждается в улучшениях. Если вы хотите принять участие в переводе свяжитесь с @alexgton.
В этом разделе кратко рассматриваются операторы FunC, составляющие код обычных тел функций.
Операторы выражений
Наиболее распространенным типом оператора является оператор выражения. Эт о выражение, за которым следует ;
. Описание выражения было бы довольно сложным, поэтому здесь представлен только краткий обзор. Как правило, все вложенные выражения вычисляются слева направо, за исключением перестановки стека asm, которая может определять порядок вручную.
Объявление переменной
Невозможно объявить локальную переменную, не определив ее начальное значение.
Вот несколько примеров объявлений переменных:
int x = 2;
var x = 2;
(int, int) p = (1, 2);
(int, var) p = (1, 2);
(int, int, int) (x, y, z) = (1, 2, 3);
(int x, int y, int z) = (1, 2, 3);
var (x, y, z) = (1, 2, 3);
(int x = 1, int y = 2, int z = 3);
[int, int, int] [x, y, z] = [1, 2, 3];
[int x, int y, int z] = [1, 2, 3];
var [x, y, z] = [1, 2, 3];
Переменная может быть "переобъявлена" в том же блоке. Для примера, вот правильный код:
int x = 2;
int y = x + 1;
int x = 3;
На самом деле, второе появление int x
- это не объявление, а просто проверка во время компиляции того, что x
имеет тип int
. Таким образом, третья строка, по сути, эквивалентна простому присваиванию x = 3;
.
Во вложенных областях переменная может быть действительно объявлена заново, как и в языке С. Для примера, вот правильный код:
int x = 0;
int i = 0;
while (i < 10) {
(int, int) x = (i, i + 1);
;; here x is a variable of type (int, int)
i += 1;
}
;; here x is a (different) variable of type int
Но как упоминалось в разделе глобальных переменных, глобальная переменная не может быть переопределена.
Обратите внимание, что объявление переменной — это оператор выражения, поэтому на самом деле конструкции вроде int x = 2
являются полноценными выражениями. Для примера, вот правильный код:
int y = (int x = 3) + 1;
Это объявление двух переменных x
и y
, равных 3
и 4
соответственно.