Отже, в шарпі є 8 цілочисельних типів і всі вони розділяються по діапазону значень і відповідно по розміру, виділеної на цю перемінну пам'яті. Таблиця внизу:
1 | sbyte | 0 .. 255 | 8 біт | Знаковий |
2 | byte | -128 .. 127 | 8 біт | Беззнаковий |
3 | short | -32,768 .. 32,767 | 16 біт | Знаковий |
4 | ushort | 0 .. 65,535 | 16 біт | Беззнаковий |
5 | int | -2,147,483,648 .. 2,147,483,647 | 32 біт | Знаковий |
6 | uint | 0 .. 4,294,967,295 | 32 біт | Беззнаковий |
7 | long | -9*10^18 — 9*10^18 | 64 біт | Знаковий |
8 | ulong | 0— 18*10^18 | 64 біт | Беззнаковий |
В програмуванні ігор, доволі важливо стежити за виділенням пам'яті. Тому рекомендую мати таблицю типів завжди під рукою. В майбутньому, коли ми будемо програмувати більш серйозні приклади, ви зрозумієте навіщо за цим слідкувати, а зараз для прикладу можу привести вам наступне. Згадайте ігру Total war, там в режимі бою на сцені може знаходитися до декількох тисяч воїнів. У кожного з них є власні очки життя, які припустимо, реалізовані цілочисельним типом. Очевидно, що для воїнів достатньо 10000 очків життя, тобто нам достатньо використати тип short (16 біт - 2байти), проте якщо б ми використали тип int (32біта - 4байти) кількість виділеної пам'яті збільшиться вдвічі. Тепер підрахуємо, нехай на сцені 1000 воїнів - це 2000 байтів (майже 2 мегабайти) проти 4000 байтів. А тепер врахуйте що у кожного є такі параметри як: швидкість, сила атаки, захист (від стріл, від глухих ударів, від порізів), точність ударів, кількість стріл у лучників і це тільки мала частина списку. Слідкуючи за виділенням пам'яті на перемінні ми можемо економити до третини оперативної пам'яті в ваших іграх (без урахування пам'яті яку потребує движок). Наступним, на що потрібно звернути увагу, це те що Шарп строго типізований. Це означає, що ви маєте визначити тип перемінної під час того, як об'являєте перемінну.
Типи з плаваючою точкою є тільки два. Це float і double. Тип з плаваючою точкою може містити дробові значення. Тип double являється більшою версією типу float.
9 | float | +1.5*10^-45 -/+3.4*10^38 | 32 біт | Знаковий |
10 | double | +5.0*10^-324 -/+1.7*10^308 | 64 біт | Знаковий |
Тип decimal, призначений для математичних операцій зв'язаних з грошовими одиницями. Причина цьому, помилки зв'язані з заокругленням, в математичних операціях, типів з плаваючою точкою. Цей тип здатний точно представити до 28 десяткових розрядів.
|
В C# на відміну від інших мов програмування символьний тип представляє собою 16-розрядний, без знаковий тип, який може представити алфавіти всіх існуючих в світі мов, так як використовує стандарт кодування юнікод(unicode). Як наслідок стрічки також закодовані в цьому кодуванні.
|
Символьний типам значення потрібно призначати в лапках (в одинарних лапках для символьного типу, і в подвійних лапках для стрічки).
Логічний тип bool. Цей тип може містити тільки два значення, правильно або неправильно (true або false).
|
І на завершення object. Цей тип ми розглянемо детальніше коли будемо вивчати класи. Зараз вам потрібно знати, що цей тип являється предком усіх базових типів C# і може містити значення будь якого з них.
Нижче приведена повна таблиця типів.
№ | Тип | Діапазон | Розмір в бітах | Знаковість |
1 | sbyte | 0 .. 255 | 8 біт | Знаковий |
2 | byte | -128 .. 127 | 8 біт | Беззнаковий |
3 | short | -32,768 .. 32,767 | 16 біт | Знаковий |
4 | ushort | 0 .. 65,535 | 16 біт | Беззнаковий |
5 | int | -2,147,483,648 .. 2,147,483,647 | 32 біт | Знаковий |
6 | uint | 0 .. 4,294,967,295 | 32 біт | Беззнаковий |
7 | long | -9*10^18 — 9*10^18 | 64 біт | Знаковий |
8 | ulong | 0— 18*10^18 | 64 біт | Беззнаковий |
9 | float | +1.5*10^-45 -/+3.4*10^38 | 32 біт | Знаковий |
10 | double | +5.0*10^-324 -/+1.7*10^308 | 64 біт | Знаковий |
11 | decimal | +1.0*10^-28 - +7.9*10^28 | 128 біт | Знаковий |
12 | char | символ Юнікода | 16 біт | Беззнаковий |
13 | string | Містить послідовність символів char | ||
14 | bool | true або false | 8 біт | Беззнаковий |
15 | object | Предок усіх базових типів в C# |
Зверніть увагу. Не варто зубрити всі перемінні напам'ять, для початку ви можете зберегти та використовувати таблицю типів, як джерело. І ви замітите, що вже дуже скоро ви автоматично запам'ятаєте всі типи.
А зараз, давайте розглянемо всі доступні варіанти об'явлення всіх цих типів, а також методи маніпуляції цими перемінними.
int i=0;
int j;
j=0;
Ці варіанти ініціалізації перемінної ми вже розглядали в попередньому уроці. Тепер давайте розглянемо нові варіанти ініціалізації перемінних.
int a, b, c;
a=0;
b=1;
c=2;
int x, y=10, z=5;
int t= x+y+z;
Зверніть також увагу на те що досі ми ініціалізувати тільки цілочисельний тип переменних. Хоч правила ініціалізації залишаються дійсними і для інших типів, проте значення, які ми присвоюємо перемінним можуть відрізнятися в залежності від типу перемінної. Наприклад:
bool a = true;
char s = '@';
string str = "стрічка";
float b = 1.5f;
double c = 1.5;
decimal d = 1.5m;
Отже Як бачите значення які ми присвоїли перемінним відрізняється від значень цілочисельного типу. Розглянемо детальніше кожне із значень. Першим іде логічне значення true (перемінний типу bool можна призначити значення тільки true або false). Далі йде символьне значення. Для типу char ми використовуємо одинарні лапки в яких заключено текстовий символ. Для типу string ми використовуємо подвійні лапки в яких заключаємо стрічку тексту. Далі йдуть дробові типи значень. Для типу float ми присвоюємо значення 1.5 з буквою f в кінці. Дана буква являється літералом, про які ми поговоримо пізніше. Робиться це тому, що дробові значення по замовчуванню представляються як значення типу double, а даний літерал приводить значення до типу float. Аналогічна ситуація відбувається і з типом decimal, тільки там ми використовуємо літерал, тільки там ми використовуємо літерал, тільки там ми використовуємо літерал m. Проте для самого типу double ми не використовуємо літерал, так як дробові числа, як було сказано раніше, по замовчуванню використовують цей тип значень.
В наступних частинах ми розглянемо літерали, приведення типів (конвертацію типів), облась видимості перемінних і їх час життя.
Не забувайте висловлювати свою думку щодо даної статті в коментарях, задавайте запитання, діліться ідеями. Також дивіться урок в YouTube і одразу ж підписуйтесь на канал. Діліться моїм блогом зі своїми друзями. Підписуйтесь на мій Твіттер, щоб не пропустити нові уроки та статті. А головне всім удачі.
Немає коментарів:
Дописати коментар