Неявне перетворення типів
Свайпніть щоб показати меню
Перетворення типів відбувається постійно. Воно може бути або неявним перетворенням, яке виконується автоматично компілятором, або явним перетворенням, коли ви явно змінюєте типи у коді.
main.cpp
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
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:
Дякуємо за ваш відгук!
Запитати АІ
Запитати АІ
Запитайте про що завгодно або спробуйте одне із запропонованих запитань, щоб почати наш чат