Всего на сайте:
282 тыс. 988 статей

Главная | Механика

Square a;. scanf("%d%d,&x,&y); a=x*y; printf("a=%d,a); } Як..  Просмотрен 403

scanf("%d%d',&x,&y);

a=x*y;

printf("a=%d',a);

}

Якщо операція * успадковується від типу float,то розумно припустити, що тип результату операції х*утакий самий, як і тип операндів (у нашому випадку – тип length). Отже, операція присвоювання а=х*у;незаконна, тому що змінна a типу square. Операція присвоювання х=х*у; є законною, але нісенітницею з погляду предметної галузі.

Однак мова С++ має механізми перевизначення існуючих операцій і визначення нових. Операція *, визначена для двох операндів типу type1, відрізняється від операції *, визначеної для двох операндів типу type2. У таких випадках говорять, що операція перевантажена. Яка операція мається на увазі в конкретному контексті, визначається компілятором при дослідженні типів передбачуваного результату. Тому використання а=х*у; цілком коректне.

4.5. Перераховні типи

 

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

enum day_of_week{mon, tue, wed, the, fri, sat, son};

Кожне значення типу позначається ім'ям ідентифікатора, за допомогою якого на це значення потім посилаються. Значення відповідних ідентифікаторів за умовчанням у мові С визначаються як послідовні цілі числа, починаючи з 0. Такий порядок можна змінити, присвоївши відповідному ідентифікатору необхідне число. Наприклад, можемо досить елегантно визначити новий тип для зображення шістнад­цяткового числа:

Предыдущая статья:Vel_kut kut; Следующая статья:Enum hexx. {A=10,B,C,D,E,F}; Десяткові цифри 0–9 будуть одночасно й шістнадцятко..
page speed (0.0168 sec, direct)