Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Вивчайте Неявне перетворення типів | Section
Типи Даних C++

bookНеявне перетворення типів

Свайпніть щоб показати меню

Перетворення типів відбувається постійно. Воно може бути або неявним перетворенням, яке виконується автоматично компілятором, або явним перетворенням, коли ви явно змінюєте типи у коді.

main.cpp

main.cpp

copy
1234567
#include <iostream> int main() { int num = 6.5; // Implicit type conversion std::cout << num << std::endl; }

У цьому прикладі 6.5, число з плаваючою комою, неявно перетворюється на int (відкидається дробова частина).

Неявне перетворення типу відбувається, коли тип змінної не відповідає типу, який очікує компілятор (наприклад, коли ми присвоюємо значення змінній типу int, компілятор очікує ціле число і виконає перетворення типу, якщо отримає щось інше).

  • Червоні стрілки позначають втрату даних. Наприклад, якщо ми перетворюємо float у long (або int), десяткова частина буде втрачена;
  • Зелені стрілки позначають відсутність втрати даних. Наприклад, можна безпечно перетворити int у long, і результат залишиться тим самим;
  • Жовта стрілка при перетворенні з long (або int) у float (або long) означає, що іноді може відбутися втрата даних через недостатню точність float (або long).
main.cpp

main.cpp

copy
1234567891011
#include <iostream> #include <iomanip> int main() { int num_int = 123456789; float num_float = num_int; std::cout << std::setprecision(10); std::cout << num_float << std::endl; }

Ще один приклад неявного перетворення типів — це операції +, -, *, /. Вони повинні виконуватися над змінними одного типу даних. Якщо це не так, C++ неявно виконує підвищення типу. Наприклад, int / double -> double / double.

Ще один приклад, де можна зустріти неявне перетворення типів — умови. Наприклад, оператор if.

Він очікує, що умова буде типу bool. Але завдяки неявному перетворенню типів можна передавати інші типи даних як умови. Ось зображення, яке показує, як вони перетворюються у bool:

question mark

Яке з наступних присвоєнь може призвести до втрати даних через неявне перетворення типів у C++?

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

Все було зрозуміло?

Як ми можемо покращити це?

Дякуємо за ваш відгук!

Секція 1. Розділ 16

Запитати АІ

expand

Запитати АІ

ChatGPT

Запитайте про що завгодно або спробуйте одне із запропонованих запитань, щоб почати наш чат

Секція 1. Розділ 16
some-alt