Типи з плаваючою точкою (float, double і long double)

Головна | Про нас | Зворотній зв'язок
Розмір типу int не визначається стандартом, а залежить від комп'ютера і компілятора.
Для 16-розрядного процесора під величини цього типу відводиться 2 байти,
для 32-розрядної - 4 байта.
Специфікатор short перед ім'ям типу вказує компілятору, що під число потрібно відвести 2 байта незалежно від розрядності процесора.
Специфікатор long означає, що ціла величина буде займати 4 байти.
Таким чином, на 16-розрядному комп'ютері еквіваленти int і short int,
а на 32-розрядному - int і long int.
Внутрішнє представлення величини цілого типу - ціле число в двійковому коді. При використанні специфікатор signed старший біт числа інтерпретується як знаковий (0 - позитивне число, 1 - негативне). Специфікатор unsigned дозволяє представляти тільки позитивні числа, оскільки старший розряд розглядається як частина коду числа. Т. о. діапазон значень типу int залежить від специфікаторів. Діапазони значень величин цілого типу з різними специфікаторами для IBM PC-сумісних комп'ютерів наведені в таблиці «Діапазони значень простих типів даних».
За замовчуванням всі цілочисельні типи вважаються знаковими, тобто специфікатор signed можна опускати.
Константам, яке трапляється в програмі, приписується той або інший тип відповідно до їх виду. Якщо він з яких-небудь причин не влаштовує програміста, моно явно вказати необхідний тип за допомогою суфіксів L, l (long) і U, u (unsigned). Наприклад, константа 32L матиме тип long і займати 4 байти. Можна використовувати суфікси L і U одночасно, наприклад, 0x22UL або 05Lu.
Примітка. Типи short int, long int, signed int і unsigned int можна скорочувати до short, long, signed і unsigned відповідно.
Під величину символьного типу відводиться кількість байт, достатню для розміщення будь-якого символу з набору символів для даного комп'ютера, що і зумовило назву типу. Як правило, це 1 байт. Тип char, як і інші цілі типи, може бути зі знаком або без знаку. У величинах зі знаком можна зберігати значення в діапазоні від -128 до 127. При використанні специфікатор unsigned значення можуть знаходитися в межах від 0 до 255. Цього достатньо для зберігання будь-якого символу з 256-символьного набору ASCII. Величини типу char застосовуються також для зберігання цілих чисел.
Розширений символьний тип (wchar_t)
Тип wchar_t призначений для роботи з набором символів, для кодування яких недостатньо 1 байта. Наприклад, Unicode. Розмір цього типу залежить від реалізації; як правило, він відповідає типу short. Строкові константи типу wchar_t записуються з префіксом L, наприклад, L "Gates".
Величини логічного типу можуть приймати тільки значення true і false. є зарезервованими словами. Внутрішня форма подання значення false - 0 (нуль). Будь-яке інше значення інтерпретується як true. При перетворенні до цілого типу true має значення 1.
Типи з плаваючою точкою (float, double і long double)
Стандарт C ++ визначає три типи даних для зберігання речових значень: float, double і long double.
Типи даних з плаваючою точкою зберігаються в пам'яті інакше, ніж цілочисельні. Внутрішнє представлення дійсного числа складається з двох частин - мантиси і порядку.
У IBM PC-сумісних комп'ютерах величини типу float займають 4 байта, з яких один двійковий розряд відводиться під знак мантиси. 8 розрядів під порядок і 23 під мантиссу. Мантиса - це число, більше 1.0, але менше 2.0. Оскільки старша цифра мантиси завжди дорівнює 1, вона не зберігається.
Для величин типу double, що займають 8 байт, під порядок і мантиссу відводиться 11 і 52 розряду відповідно. Довжина мантиси визначає точність числа, а довжина близько - його діапазон. Як можна бачити з таблиці в кінці запису, при однаковій кількості байт, що відводиться під величини типу float і long int, діапазони їх допустимих значень сильно розрізняються через внутрішню форми подання.
Специфікатор long перед ім'ям типу double вказує, що під його величину відводиться 10 байт.
Константи з плаваючою точкою мають за замовчуванням тип double. Можна явно вказати тип константи за допомогою суфіксів F, f (float) і L, l (long).
Наприклад, константа 2E + 6L матиме тип long double, а константа 1.82f - тип float.
При написанні універсальних для різних платформ програм не можна робити припущень про розмір типу int. Для його отримання необхідно користуватися операцією sizeof, результатом якої є розмір типу в байтах.
Наприклад, для операційної системи MS-DOS sizeof (int) дасть в результаті 2, а для Windows 98 або OS / 2 результатом буде 4.
У стандарті ANSI діапазони значень для основних типів не задаються, визначаються тільки співвідношення між їх розмірами, наприклад:
sizeof (float) ≤ slzeof (double) ≤ sizeof (long double)
sizeof (char) ≤ slzeof (short) ≤ sizeof (int) ≤ sizeof (long)
Примітка. Мінімальні та максимальні допустимі значення для цілих типів залежать від реалізації і приведені в заголовки
Крім перерахованих, до основних типів мови відноситься тип void, але безліч значень цього типу порожньо. Він використовується для визначення функцій, які не повертають значення, для вказівки порожнього списку аргументів функції, як базовий тип для покажчиків і в операції приведення типів.
Різні види цілих і речових типів, що розрізняються діапазоном і точністю представлення даних, введені для того, щоб дати програмісту можливість найбільш ефективно використовувати можливості конкретної апаратури, оскільки від вибору типу залежить швидкість обчислень і обсяг пам'яті. Але оптимізована для комп'ютерів будь-якого одного типу програма може стати не переноситься на інші платформи, тому в загальному випадку слід уникати залежностей від конкретних характеристик типів даних.
Програма на мові С ++ складається з функцій. описів і директив препроцесора. Одна з функцій повинна мати ім'я main. Виконання програми починається з першого оператора цієї функції. Найпростіше визначення функції має такий вигляд:
тип значення ім'я ([параметри]) оператори, складові тіло функції.>
Як правило, функція використовується для обчислення будь-якого значення, тому перед ім'ям функції вказується його тип. Нижче наведені найнеобхідніші відомості про функції:
- якщо функція не повинна повертати значення, вказується тип void:
- тіло функції є блоком і, отже, полягає в фігурні дужки;
- функції не можуть бути вкладеними;
- кожен оператор закінчується крапкою з комою (крім складеного оператора).
Приклад структури програми, що містить функції main, fl і f2:
1. 2. 3. 4. 5. 6. 7. 8. 9. 10 11
Програма може складатися з декількох модулів (вихідних файлів).
Зауваження про введення / виведення в C ++
У мові С ++ немає вбудованих засобів введення / виведення - він здійснюється за допомогою функцій, типів і об'єктів, що містяться в стандартних бібліотеках.
Використовується два способи: функції, успадковані з мови С, і об'єкти С ++.
Основні функції вводу / виводу в стилі С:
int scanf (const char * format.) // введення
int printf (const char * format.) // висновок
Вони виконують форматований введення і виведення довільної кількості величин відповідно до рядком формату format. Рядок формату містить символи, які при виведенні копіюються в потік (на екран) або запитуються з потоку (з клавіатури) при введенні, і специфікації перетворення, що починаються зі знака%, які при введенні і виведенні замінюються конкретними величинами.
Приклад програми, що використовує функції введення / виводу в стилі С:
#include
int main () int i;
printf ( "Введіть ціле число \ п");
scanf ( ".", i);
printf ( "Ви ввели число., спасибі!", i);
return 0;
>
Перший рядок цієї програми - директива препроцесора, по якій в текст програми вставляється заголовки, що містить опис використаних в програмі функцій введення / виводу (в даному випадку кутові дужки є елементом мови). Всі директиви препроцесора починаються зі знака #.
Третій рядок - опис змінної цілого типу з ім'ям i.
Програма з використанням бібліотеки класів С ++:
#include
int main () int i;
cout <<"Введите целое число\n "; cin>> I;
cout <<"Вы ввели число " < return 0;
>
Заголовки містить опис набору класів для управління вводом / виводом. У ньому визначені стандартні об'єкти-потоки cin для введення з клавіатури і cout для виведення на екран, а також операції приміщення в потік <<и чтения из потока>>.
Можна використовувати обидва способи організації введення \ виводу, але в одній програмі змішувати їх не рекомендується.