Рейтинг - 5.0 (1)

В этом уроке Вы узнаете о базовых типах данных в C#, которые справедливы и для скриптинга GTA IV.

Как вчера помню, как писал урок о типах данных в SannyBuilder и вот уже добрался и к GTA 4 :) Если в саннике типов данных было так мало, что на пальцах посчитать можно, то в C# их просто огромное количество! Большинство из них я сам не знаю, поэтому рассмотрим то, что чаще встречаются.

Начнем с целых чисел. Существует большое количество типов, которые могут содержать в себе целые числа. Обычно они отличаются диапазоном значений. Кроме этого, некоторые типы имеют синонимы, чтобы не писать их длинные варианты. Вот некоторые из них:

ТипСинонимРазмер ( в байтах )Диапазон значений
System.Bytebyte1[0;255]
System.SBytesbyte1[-128;127]
System.Int16short2[-32768;32767]
System.UInt16ushort2[0;65535]
System.Int32int4[-2147483648;2147483647]
System.UInt32uint4[0;4294967295]
System.Int64long8[-9223372036854775808;9223372036854775807]
System.UInt64ulong8[0;18446744073709551615]

Дальше пойдут дробные числа. Есть, как минимум три, часто использующихся типа:

ТипСинонимРазмер ( в байтах )Диапазон значений
System.Singlefloat4[5E-45;3.4E+38]
System.Doubledouble8[5E-324;1.7Е+308]
System.Decimaldecimal16[1Е-28;7.9Е+28]

Также в C# мы можем хранить как отдельный символ в переменной, так и целую строку. Для этого существуют следующие типы:

ТипСинонимРазмер ( в байтах )Диапазон значенийФорма записи
System.Charchar2[0;65535]'D'
System.Stringstring4-8 в зависимости от разрядности ОС-"my string"

Размер символов, как и диапазон, может варьироваться, в зависимости от выбранной кодировки, но, как правило, этого хватает для большинства языков. В кавычках мы можем указать только 1 символ!

Что касается строк, то они являются ссылочными типами данных, но реализованы как остальные простые типы. Строка являет собой фиксированный набор символов, который собирается из всех символов, помещённых в двойные кавычки. Ограничения на длину строки, как таковую, нет и зависит она по большей мере от достуной оперативной памяти.

Есть ещё очень важный простый логический тип, который чаще всего используется для хранение состояний ( истина / ложь ), а также как выражение для проверки условий:

ТипСинонимРазмер ( в байтах )Форма записи
System.Booleanbool1true или false

Здесь важно отметить, что в C# не определено взаимное преобразование логических и целых значений. Например, 1 не преобразуется в значение true, а 0 - в значение false. И на оборот. На этот крючок часто попадаются люди, которые переходят с C/C++, где такое преобразование допускалось, и из за этого возникают некоторые проблемы.

Давайте узнаем как объявлять переменные! Есть много способов. Вот таблица этих вариантов:

Объявление в столбикОбъявление в одну строкуОбъявление и присвоение значения переменным
int a;
int b;
int c;
int a, b, c;
int a = 0;
int b, c = 36;
int d = -5, c = 20;

Ещё важно упомянуть, что некоторые литералы простых типов имеют дополнительный префикс. Их цель в том, чтобы компилятор знал какой тип данных мы присваиваем. Например, такая запись оповестит нас об ошибке:

float x = 20.0; // ошибка
float y = 4; // всё ок

Во втором случае мы указали число вовсе без плавающей точки и при этом отработало всё на ура. А вот первый вариант никак не поймёт что мы написали. Суть ошибки в том, что по-умолчанию выражение 20.0 относится к типу double, у которого нет явного преобразования в тип float. Чтобы указать компилятору, что мы хотим использовать именно float, нужно дописать суффикс F ( регистр может быть любым ):

float x = 20.0F; // всё ок
float y = 4F; // тоже работает

На самом деле таких суффиксов достаточно много, но рассматривать их здесь я не буду. Вы уже можете найти их самостоятельно. Ещё одна особенность литералов в способе написания дробных чисел, например: 0.0001F. C# позволяет нам пропускать первое число до точки, в результате мы можем увидеть и такую запись:

float x = .0001F;

Далее рассмотрим операции над типами, которые существуют в C#. Если в SannyBuilder все операции нумеровались ( опкоды ) и сам скриптовый язык был низкоуровневым, то C# позволяет делать огромное количество операций, комбинируя их.

Все операции можно разделить на несколько типов. Обычно за операции отвечают так называемые операторы. Они применяются не только для базовых типов и могут нести дополнительную логику при использовании оператора ( не обязательно выполняя ту операцию, символ которого используется ):

  1. Арифметические операторы:
    ОператорДействие
    +Сложение
    -Вычитание, унарный минус
    *Умножение
    /Деление
    %Деление по модулю
    --Декремент
    ++Инкремент
  2. Операторы отношения, ( означает взаимосвязь, которая может существовать между двумя значениями ):
    ОператорДействие
    ==Равно
    !=Не равно
    >Больше
    <Меньше
    >=Больше или равно
    <=Меньше или равно
  3. Логические операторы ( взаимосвязь между логическими значениями "истина" и "ложь" ):
    ОператорДействие
    &И
    |ИЛИ
    ^Исключающее ИЛИ
    &&Укороченное И
    ||Укороченное ИЛИ
    !НЕ
  4. Операторы присваивания:
    ОператорАналог
    += x = x + 1;
    -= x = x - 1;
    *=x = x * 1;
    /=x = x / 1;
    %=x = x % 1;
    |=x = x | 1;
    ^=x = x ^ 1;
  5. Поразрядные операторы:
    ОператорДействие
    &Поразрядное И
    |Поразрядное ИЛИ
    ^Порязрядное исключающее ИЛИ
    <<Сдвиг влево
    >>Сдвиг вправо
    ~Дополнение до 1 ( унарный оператор НЕ )

Как мы видим, некоторые операторы могут использоваться в разных целях, в зависимости где их применяют. В одном случае он может быть логическим - в другом: поразрядным. В любом случае, для написания скриптов для GTA IV большинство операторов будет не нужно.

Примеров может быть уйма, я написал самый простой:

int a;
a = (25 + 65)*2;
a /= 5;

Объявляем переменную типа int. Дальше идут операции над ней. Проблемы, думаю, могут возникнут у того, кто не дружил с математикой в детстве(или сейчас).

Язык C# действует по тому же принципу, что и математика. Сначала выбирается приоритет выполнения операций. В нашем случаи сначала будут выполнятся операции в скобках: 25+65=90. Дальше идёт умножение: 90*2=180. Этот результат записывается в переменную a. Следующая операция: идёт деление на 5. Принцип тот же, что и у SannyBuilder. Переменная делит своё значение на выражение и записывает результат в себя. Следовательно, 180/5=36.

Другие операции будем рассматривать по-необходимости. Сейчас нет смысла нагружать вас этим :)


Теги: Операторы, операции над базовыми типами, базовые типы данных, C#
Вход на сайт

Поиск
Категории раздела
Мини-чат
Пожалуйста, все вопросы по скриптингу задавать на форуме!
Наш опрос
Какие моды Вы хотите видеть на сайте?
Всего ответов: 6
Активность на сайте
Пожертвования
Кошельки WebMoney:
U859420971000
R407741810602
Z331072372430
E314272616890
Друзья сайта
Полезные ресурсы
Статистика

Онлайн всего: 1
Гостей: 1
Пользователей: 0

Сегодня нас посетили:
wmysterio, eglive
Рекомендую
Реклама