Язык Carbon — Операторы, часть 4

Обзор
В языке Carbon есть практически те же операторы, что и в C++. Поэтому, если вы знакомы с ними, вы можете пропустить эту часть.
Как всегда, читатель может найти исходные коды частей по этой ссылке на github.

Арифметические операторы
Отрицание: —
Оператор сложения: +
Оператор вычитания: —
Оператор умножения: *
Оператор деления: /
Оператор модуляции: %

Давайте рассмотрим эти операторы вкратце:

    var myVariable: i32 = 3;
    myVariable = -myVariable;
    Print("Negation of 3 is: {0}", myVariable);
    Print("Sum of 6 and 3 is: {0}",6 + 3);
    Print("Difference of 6 and 3 is: {0}",6 - 3);
    Print("Multiplication of 6 and 3 is: {0}",6 * 3);
    Print("6 divided by 3 is: {0}",6/3); 
    Print("Mod3 of 5 is: {0}",5 % 3);
Вход в полноэкранный режим Выход из полноэкранного режима

Преобразование в Carbon
Чтобы изменить тип переменной, мы используем преобразование. Carbon поддерживает операции преобразования с помощью ключевого слова as.

var myConvertable: i32 = 3;
var convertedVersion: f32 = myConvertable as f32;
Войти в полноэкранный режим Выход из полноэкранного режима

Условные операторы
Логические операторы практически одинаковы. Поскольку мы еще не изучали условные операторы, они также бесполезны для нас сейчас 🙂

  • Равно ==

  • Не равно !=

  • Больше чем >

  • Больше или равно >=

  • Меньше чем <

  • Меньше чем или равно <=

Приведем несколько примеров таких операторов:

    var s: bool = (22 == 22);
    var a: bool = (8 > 2022);
    var d: bool = (8 >= 2022);
    var i: bool = (8 < 2022);
Войти в полноэкранный режим Выйти из полноэкранного режима

Логические операторы
Логические операторы аналогичны операторам python:

  • and ключевое слово для операции and (вместо &&)

  • or — ключевое слово для операции or (вместо ||)

  • not ключевое слово для логического дополнения (вместо !)

    var g: bool = s and a;
    var l: bool = d or i;
    var b: bool = not i;
Вход в полноэкранный режим Выход из полноэкранного режима

Побитовые операторы

  • ^ для дополнения (перед значением)

  • & для побитового И (между значениями)

  • | для побитового ИЛИ (между значениями)

  • << для сдвига влево (между значениями)

  • для сдвига вправо (между значениями)

  • ^ для XOR (между значениями)

Давайте рассмотрим несколько примеров для лучшего понимания:
Мы будем использовать 32-битные целые числа, и чтобы лучше видеть эффекты, их значения будут приведены в виде битов.

    var first: i32 = 7; // 00000000 00000000 00000000 00000111
    var second: i32 = 2; // 00000000 00000000 00000000 00000010
Вход в полноэкранный режим Выход из полноэкранного режима

Давайте возьмем дополнение первой переменной вручную. Чтобы получить дополнение, мы, по сути, меняем 0 на 1 и 1 на 0:
11111111 11111111 11111111 11111000
Поскольку это целое знаковое число, основанное на 2, чтобы найти его значение, мы должны взять дополнение 1 и прибавить к нему 1. Однако мы уже выполнили дополнение 1, поэтому исходное значение равно дополнению 1. Если прибавить к нему 1, то получится 8. Значит, результат должен быть -8.

Давайте проверим это с помощью нашего кода:

Операция довольно проста. Мы смотрим на 1, которая находится в том же месте. Тогда должно получиться:
00000000 00000000 00000000 00000010

Проверим это с помощью нашего кода:

И продолжим с другими операторами:

    Print("first or second: {0}", first | second); // Output: 7
    Print("first xor second: {0}", first ^ second); // Output: 5
    Print("first left shift by 1: {0}", first << 1); // Output: 14
    Print("first right shift by 1: {0}", first >> 1); // Output: 3
Войти в полноэкранный режим Выйти из полноэкранного режима

Заключение
Несмотря на то, что это не все операторы в Carbon, можно заметить, что они схожи с другими языками программирования. Однако, несмотря на то, что Carbon является преемником C++, есть некоторые отличия.

Оцените статью
devanswers.ru
Добавить комментарий