Типи даних в C - Пояснення цілого числа, плаваючої крапки та порожнечі

Типи даних в C

Існує кілька різних способів зберігання даних на мові C, і всі вони унікальні один від одного. Типи даних, в яких інформація може зберігатися, називаються типами даних. C значно менше прощає типів даних, ніж інші мови. Як результат, важливо переконатись, що ви розумієте існуючі типи даних, їх можливості та їх обмеження.

Однією химерністю типів даних C є те, що вони повністю залежать від обладнання, на якому ви використовуєте свій код. На intвашому ноутбуці буде менше, ніж intна суперкомп’ютері, тому важливо знати обмеження обладнання, над яким ви працюєте. Ось чому типи даних визначаються як мінімальні - intяк ви дізнаєтесь, значення становить мінімум -32767 до 32767: на певних машинах воно зможе зберігати ще більше значень, ніж це.

Є дві категорії, на які ми можемо поділити це: цілі числа та числа з плаваючою комою. Цілі числа - цілі числа. Вони можуть бути позитивними, негативними або нульовими. Такі числа, як -321, 497, 19345 та -976812, є цілком дійсними цілими числами, але 4,5 не тому, що 4,5 не є цілим числом.

Числа з плаваючою комою - це числа з десятковою комою. Як і цілі числа, -321, 497, 19345 та -976812 є дійсними, але зараз діють також 4,5, 0,0004, -324,984 та інші нецілі числа.

C дозволяє нам вибирати між кількома різними варіантами з нашими типами даних, оскільки всі вони по-різному зберігаються на комп'ютері. Як результат, важливо знати про можливості та обмеження кожного типу даних, щоб вибрати найбільш підходящий.

Цілочисельні типи даних

Персонажі: char

charмістить символи - такі речі, як літери, розділові знаки та пробіли. У комп'ютері символи зберігаються як числа, тому charмістять цілі значення, що представляють символи. Фактичний переклад описується стандартом ASCII. Ось зручний стіл для пошуку.

Фактичний розмір, як і всі інші типи даних у C, залежить від обладнання, над яким ви працюєте. Як мінімум, це принаймні 8 біт, отже, у вас буде щонайменше від 0 до 127. Або ж ви можете використовувати, signed charщоб отримати принаймні від -128 до 127.

Стандартні цілі числа: int

Обсяг пам'яті, який intзабирає один, залежить від обладнання. Однак ви можете очікувати, що intрозмір принаймні 16 біт. Це означає, що він може зберігати значення від -32,768 до 32,767 або більше, залежно від обладнання.

Як і всі ці інші типи даних, існує unsignedваріант, який можна використовувати. unsigned intМоже бути позитивним і нульовим , а не негативним, тому він може зберігати значення від 0 до 65,535, або більше , в залежності від обладнання.

Короткі цілі числа: short

Це не звикає часто, але добре знати, що воно існує. Як і int, він може зберігати від -32768 до 32767. Однак, на відміну від int, це ступінь його здатності. Де ви можете використовувати short, ви можете використовувати int.

Більші цілі числа: long

Тип longданих зберігає цілі числа на зразок int, але надає ширший діапазон значень за рахунок витрати більше пам'яті. Long зберігає щонайменше 32 біти, надаючи йому діапазон від -2,147,483,648 до 2,147,483,647. В якості альтернативи використовуйте unsigned longдля діапазону від 0 до 4 294 967 295.

Ще довші цілі числа: long long

Тип long longданих є надмірним майже для кожного додатка, але C дозволить вам використовувати його в будь-якому випадку. Він здатний зберігати щонайменше −9 223 372 076 854 775 807 до 9 223 372 076 854 775 807. Крім того, отримайте ще більше надмірних результатів unsigned long long, які дадуть вам принаймні від 0 до 18 446 744 073 709 551 615.

Типи даних числа з плаваючою комою

Основні числа з плаваючою комою: float

float займає принаймні 32 біти для зберігання, але дає нам 6 знаків після коми від 1,2E-38 до 3,4E + 38.

Парний розряд: double

doubleзаймає подвійну пам'ять float (тобто принаймні 64 біти). Натомість double може надати 15 знаків після коми від 2,3E-308 до 1,7E + 308.

Отримання більш широкого діапазону парних: long double

long doubleзаймає принаймні 80 біт. В результаті ми можемо отримати 19 десяткових знаків від 3.4E-4932 до 1.1E + 4932.

Вибір правильного типу даних

C робить вибір типу даних і робить нас дуже конкретними та навмисними щодо того, як ми це робимо. Це дає вам велику владу над вашим кодом, але важливо вибрати правильний.

Загалом, ви повинні вибрати мінімум для свого завдання. Якщо ви знаєте, що будете рахувати від цілого числа 1 до 10, вам не потрібно довгий і не потрібно подвійний. Якщо ви знаєте, що ніколи не матимете негативних значень, вивчіть unsignedваріанти типів даних. Забезпечуючи цю функціональність, а не роблячи це автоматично, C може створювати дуже легкий та ефективний код. Однак від вас, як програміста, залежить розуміння можливостей та обмежень і вибір відповідно до цього.

Ми можемо використовувати оператор sizeof () для перевірки розміру змінної. Дивіться наступну програму С щодо використання різних типів даних:

#include  int main() { int a = 1; char b ='G'; double c = 3.14; printf("Hello World!\n"); //printing the variables defined above along with their sizes printf("Hello! I am a character. My value is %c and " "my size is %lu byte.\n", b,sizeof(char)); //can use sizeof(b) above as well printf("Hello! I am an integer. My value is %d and " "my size is %lu bytes.\n", a,sizeof(int)); //can use sizeof(a) above as well printf("Hello! I am a double floating point variable." " My value is %lf and my size is %lu bytes.\n",c,sizeof(double)); //can use sizeof(c) above as well printf("Bye! See you soon. :)\n"); return 0; }

Вихід:

Hello World!Hello! I am a character. My value is G and my size is 1 byte. Hello! I am an integer. My value is 1 and my size is 4 bytes. Hello! I am a double floating point variable. My value is 3.140000 and my size is 8 bytes. Bye! See you soon. :)

Тип порожнечі

Тип void визначає, що значення недоступне. Він використовується в трьох типах ситуацій:

1. Функція повертається як порожня

У C є різні функції, які не повертають жодного значення, або можна сказати, що вони повертають порожнечу. Функція без значення, що повертається, має тип повернення як void. Наприклад,void exit (int status);

2. Аргументи функції як порожні

У C є різні функції, які не приймають жодного параметра. Функція без параметра не може приймати порожнечу. Наприклад,int rand(void);

3. Вказівники на анулювання

Покажчик типу void * представляє адресу об'єкта, але не його тип. Наприклад, функція виділення пам’яті void *malloc( size_t size);повертає покажчик на void, який може бути відлитий до будь-якого типу даних.