Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
КУРСАК МІЙ()()().doc
Скачиваний:
5
Добавлен:
09.12.2018
Размер:
249.86 Кб
Скачать

3.2 Похідні типи даних

3.2.1 Рядок символів

char *string15 = "\xabn\\\n\v""abcde""vnsc6\x23";

Після цього виконати деякі переприсвоювання згідно варіанту.

string15 [0] = '3';

string15 [2] = '1';

string15 [4] = '7';

string15 [6 ] = '2';

string15 [8] = '8';

string15 [10] = '6';

string15 [12] = '4';

string15 [14] = '7';

Розіб’ємо рядок на окремі біти :

char *string15 = "\xabn\\\n\v""abcde""vnsc6\x23";

string15 = ‘AB16’ ‘n’ ‘\’ ‘\n’ ‘\v’ ‘a’ ‘b’ ‘c’ ‘d’ ‘e’ ‘v’ ‘n’ ’s ’‘c’ ‘6’‘2316

в шістнадцятковій: AB 6E 5C 0A 0B 61 62 63 64 65 76 6E 73 63 36 23 00

Після виконання операцій присвоювання рядок матиме вигляд:

string15 = ‘3316’ ‘n’ ‘3116’ ‘\n’ ‘3716’ ‘a’ ’3216’ ‘c’ ‘3816’ ‘e’ ‘3616’ ‘n’ ’3416 ’‘c’ ‘3716’‘2316

в шістнадцятковій: 33 6E 31 0A 37 61 32 63 38 65 36 6E 34 63 37 23 00

Отже, в пам’яті комп’ютера після переприсвоєння рядок зберігатиметься як послідовність:

33 6E 31 0A 37 61 32 63 38 65 36 6E 34 63 37 23 00

3.2.2 Переліки

enum color10 {

BLUE,

GREEN,

CYAN,

RED,

BROWN,

GRAY = 1,

YELLOW,

WHІTE,

MAGENTA,

LІGHTGRAY,

DARKGRAY = -2,

BLACK

} c1= CYAN,

c2= BROWN,

c3= DARKGRAY;

Значення кожного елемента переліку:

BLUE = 0

RED = 3

YELLOW =2

LІGHTGRAY = 5

GREEN = 1

BROWN = 4

WHІTE = 3

DARKGRAY = -2

CYAN = 2

GRAY = 1

MAGENTA = 4

BLACK = -1

Змінна с1 = CYAN (2), зберігатиметься в прямому коді і займатиме 4 байти (int).

210 = 0000 0000 0000 0000 0000 0000 0000 00102 = 00 00 00 0216

В пам’яті комп’ютера результат зберігатиметься в зворотному розміщенні байт числа:02 00 00 00

Відповідь : 02 00 00 0016.

Змінна с2 = BROWN = (4), зберігатиметься в прямому коді і займатиме 4 байти (int).

410 = 0000 0000 0000 0000 0000 0000 0000 01002 = 00 00 00 0416

В пам’яті комп’ютера результат зберігатиметься в зворотному розміщенні байт числа: 04 00 00 00

Відповідь :04 00 00 0016.

Змінна с3=DARKGRAY=(-2), зберігатиметься в доповняльному коді і займатиме 4 байти (int).

0000 0000 0000 0000 0000 0000 0000 0010

1111 1111 1111 1111 1111 1111 1111 1101

+ 1

1111 1111 1111 1111 1111 1111 1111 1110

Останній біт – знаковий, в данномук випадку рівний 1(число від’ємне)

-210 = 1111 1111 1111 1111 1111 1111 1111 11102 = FF FF FF FE16

В пам’яті комп’ютера результат зберігатиметься в зворотному розміщенні байт числа: FE FF FF FF

Відповідь :FE FF FF FF16.

3.2.3 Масив

wchar_t array10[][3][2] = {{1,123}, {23,'4', true}}

Після цього виконати переприсвоювання згідно варіанту.

array10[0][0][0] = 0; // 0 * 22 = 0

array10[0][0][1] = 132; // 6 * 22 = 132

array10[0][1][0] = 66; // 3 * 22 = 66

array10[0][1][1] = 22; // 1 * 22 = 22

array10[0][2][0] = 154 // 7 * 22 = 154

array10[0][2][1] = 44; // 2 * 22 = 44

array10[1][0][0] = 176; // 8 * 22 = 176

array10[1][0][1] = 132; // 6 * 22 = 132

array10[1][1][0] = 88; // 4 * 22 = 88

array10[1][1][1] = 154; // 7 * 22 = 154

Після переприсвоєння масив набуде значень (десяткових):

array10[0][0][0] = 0; array10[0][0][1] = 132;

array10[0][1][0] = 66; array10[0][1][1] = 22;

array10[0][2][0] = 154; array10[0][2][1] = 44;

array10[1][0][0] = 176; array10[1][0][1] = 132;

array10[1][1][0] = 88; array10[1][1][1] = 154;

В пам’яті комп’ютера масив зберігається як послідовність чисел яка читається зліва направо і зверху вниз по матрицях масиву, при чому байти числа записані в зворотньому порядку у шістнадцятковій системі числення.

Тип wchar_t займає у ПК 2 байти, тому :

00 00 84 00 42 00 16 00 9A 00 2C 00 B0 00 84 00 58 00 9A 00 00 00 00 0016

Відповідь : 00 00 84 00 42 00 16 00 9A 00 2C 00 B0 00 84 00 58 00 9A 00 00 00 00 0016