DevioLabавтоматичне керування капіталом
ПРАЦЮЄ 24/7
КРИПТОВАЛЮТИ · АКЦІЇ · 10 БІРЖ

Портфель, який керується автоматично

DevioLab підбирає стратегії, відстежує ринки та автоматизує купівлю і продаж активів. Кількість доступних криптовалют, акцій і торгових можливостей зростає щодня.

10підключених біржCrypto + Stocksв одному портфелі24/7автоматичний контроль

Звіт з лабораторної роботи №3 «Перетворення типів даних»

Інформація про навчальний заклад

ВУЗ:
Національний університет Львівська політехніка
Інститут:
Інститут комп’ютерних наук та інформаційних технологій
Факультет:
КН
Кафедра:
Кафедра програмного забезпечення

Інформація про роботу

Рік:
2009
Тип роботи:
Звіт до лабораторної роботи
Предмет:
Програмування
Група:
КН-3
Коротко про документ

Про що ця робота

У звіті досліджено методи та засоби явного і неявного перетворення типів даних у мові C++. Наведено хід виконання завдань, програмні результати та висновки.

У роботі розглядаються

  • Перетворення типів даних
  • Явне перетворення
  • Неявне перетворення
  • Структури даних
  • Алгоритми
  • Мова програмування C++
  • Покажчики та пам'ять

Зміст і розділи

  1. Мета роботи
  2. Завдання на лабораторну роботу
  3. Перетворення
  4. Результати виконання програми
  5. Висновок
  6. Додатки
Для кого:Студенти технічних спеціальностей та викладачі програмування
Викладачі:Лисак Т.А.

Ключові поняття

перетворення типівstatic_castreinterpret_castunsigned intsigned long intfloatdoubleарифметичні операціїпам'ятьбайт

Частина тексту файла (без зображень, графіків і формул):

Міністерство освіти та науки України Національний університет «Львівська політехніка»  ЗВІТ З лабораторної роботи №3 З дисципліни: «Програмування ч.3 Структури і алгоритми» "Перетворення типів даних" Львів 2009 1. МЕТА РОБОТИ Дослідження методів та засобів явного та неявного перетворення типів даних. 2. ЗАВДАННЯ НА ЛАБОРАТОРНУ РОБОТУ Завдання 1: Визначити, які неявні перетворення типів будуть відбуватись при обчисленнях. З’ясувати, чи відбудуться втрати значимості даних. Хід міркувань підтвердити програмними результатами. В звіти пояснити кожне перетворення і метод, яким воно здійснено. typedef unsigned int type_0; typedef unsigned short int type_1; typedef unsigned long int type_2; typedef signed short int type_3; typedef signed int type_4; typedef signed long int type_5; typedef bool type_6; typedef char type_7; typedef wchar_t type_8; typedef float type_9; typedef double type_10; typedef long double type_11; type_2 x0=0; type_1 x1=29; type_5 x2=2; type_5 x3=3; type_1 x4=4; type_5 x5=5; type_2 x6=6; type_1 x7=7; type_3 x8=8; type_5 x9=9; type_5 x10=10; type_2 x11=11; x1 = x1 - 0xFFFFFFFA; x3 = 'a' + x0 - x2; x7 = x4 + x5 + x6 * 0.1; Завдання 2 Визначити, які явні і неявні перетворення типів будуть відбуватись. Результати обчислень підтвердити програмними результатами. В звіти пояснити кожне перетворення і кожний отриманий результат. int x = 0x0529; //х_4 = 0xmndn float y = 5. 29e+2; // y_2= MN. DN e +2 int v0=*reinterpret_cast<char*> (&x) +3; printf("%d %x %c \n", v0,v0,v0); int v5=*reinterpret_cast<char*> (&x) +2; printf("%d %x %c \n", v5,v5,v5); long w1 =*reinterpret_cast<long*>(&y)+33; printf("%lx %lu %ld \n",w1,w1,w1); long w6 =(*reinterpret_cast<short*>(&y)+3)+13; printf("%x %u %d \n",w6,w6,w6); 3. ПЕРЕТВОРЕННЯ Завдання 1: x1 = x1 - 0xFFFFFFFA; x1 приводиться в int (доповнення нулем), 0xFFFFFFFA – const int, результат приводиться з int в unsigned short int збереженням двох молодших байтів, старший біт втрачає статус знакового. x3 = 'a' + x0 - x2; ‘a’ – const char (значення 97 за таблицею ASCII) приводиться в long, x0 - unsigned long int приводиться в long старший біт стане знаковим, x2 - signed long int x3 - signed long int, типи однакові, приведення не буде. x7 = x4 + x5 + x6 * 0.1; х6 - unsigned long int, приводиться в float. 0.1 – const float, х4 - unsigned short int, приводиться в long (доповнення нулем), а потім в float, x5 - signed long int, приводиться в float. x7 - unsigned short int, резудбтат арифметичних операцій приводиться з float в long і з long в unsigned short int збереженням двох молодших байтів x8 = x9 + x10 - x11*10; x11 - unsigned long int, 10 const int приводиться в long int (доповнення нулем), старший біт втрачає статус знакового, x10 - signed long int, x9 - signed long int, x8 - signed short int, результат арифметичних операцій приводиться з signed long int в signed short int збереженням двох молодших байтів Завдання 2 int x = 0x0529; в пам’яті знаходиться значеення 29 05 00 00 int v0=*reinterpret_cast<char*> (&x) +3; *reinterpret_cast<char*> (&x) приводить значення за адресою &x з int в char і збіьлшує його на 3, тобто вибирається молодший байт 29 і збільшується на 3, отримаємо 2С, потім це значиться неявним перетворенням приводиться до типу int. int v5=*reinterpret_cast<char*> (&x) +2; Перетворення аналогічні з попереднім, тільки значення молодшого байту збільшується на 2, а не на 3 і в результаті отримаємо 2B float y = 5. 29e+2; в пам’яті знаходиться значеення 00 40 04 44 long w1 =*reinterpret_cast<long*>(&y)+33; *reinterpret_cast<long*>(&y) ) приводить значення за адресою &y з float в long і збільшу значення молодшого байта на 3310=2116, тобто в пам’яті знаходиться значеення 21 40 04 44 Що рівне числу 4404402116 float y = 5. 29e+2; в пам’яті знаходиться значеення 00 40 04 44 short w6 =(*reinterpret_cast<short*>(&y)+3)+13; (*reinterpret_cast<short*>(&y)+3) приводить значення за адресою &y з float в short і збільшу значення молодшого байта на 3. в результаті 2 молодших байта + 3 - 03 40, При виконанній наступної арифметичної операції неявним перетворенням тип short приводиться до типу int і в пам’яті має вигляд 03 40 00 00 і це значення збільшується на 1310=D16.В результаті отримаємо значення 4003 + D = 4010 4. РЕЗУЛЬТАТИ ВИКОНАННЯ ПРОГРАМИ.  5. ВИСНОВОК: я навчився використовувати засоби явного і неявного перетворення типів в мові С++. 6. ДОДАТКИ: #include <stdio.h> #include <conio.h> typedef unsigned int type_0; typedef unsigned short int type_1; typedef unsigned long int type_2; typedef signed short int type_3; typedef signed int type_4; typedef signed long int type_5; typedef bool type_6; typedef char type_7; typedef wchar_t type_8; typedef float type_9; typedef double type_10; typedef long double type_11; void main(){ type_8 x0=0; type_1 x1=29; type_6 x2=2; type_6 x3=3; type_3 x4=4; type_5 x5=5; type_0 x6=6; type_6 x7=7; type_4 x8=8; type_0 x9=9; type_2 x10=10; type_2 x11=11; x1 = x1 - 0xFFFFFFFA; x3 = 'a' + x0 - x2; x7 = x4 + x5 + x6 * 0.1; x8 = x9 + x10 - x11*10; printf ("x1 = %u\nx3 = %d\nx7 = %c\nx8 = %c\n\n",x1,x3,x7,x8); int x = 0x0529; float y = 5.29e+2; int v1 = static_cast< char > (x)+11; printf("%d %x %c \n", v1,v1,v1); int v6=*(reinterpret_cast<char*> (&x)+2)+22; printf("%d %x %c \n", v6,v6,v6); long w2=static_cast<long>(y)+55; printf("%lx %lu %ld \n", w2,w2,w2); short w7=*(reinterpret_cast<short*>(&y)+2)+2; printf("%x %u %d \n", w7,w7,w7); }
Допоможи студентському архіву

Ми допомогли тобі — допоможи наступному студенту

Файл ще не обрано

Оголошення від адміністратора

Антиботан аватар за замовчуванням

Подякувати Студентському архіву довільною сумою

Admin

26.02.2023 12:38

Дякуємо, що користуєтесь нашим архівом!