Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Impara Conversione implicita dei tipi | Section
Tipi di Dati in C++

bookConversione implicita dei tipi

Scorri per mostrare il menu

La conversione di tipo avviene continuamente. Può essere una conversione implicita eseguita automaticamente dal compilatore, oppure una conversione esplicita, in cui si convertono esplicitamente i tipi nel codice.

main.cpp

main.cpp

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

Nell'esempio, 6.5, un numero a virgola mobile, viene convertito implicitamente in int (operazione che avviene eliminando la parte decimale).

La conversione implicita di tipo si verifica quando il tipo di una variabile non corrisponde a quello atteso dal compilatore (ad esempio, quando si assegna un valore a int, il compilatore si aspetta un numero intero e, se riceve qualcos'altro, eseguirà una conversione di tipo).

  • Frecce rosse indicano perdita di dati. Ad esempio, se convertiamo float in long (o int), perderemo la parte decimale;
  • Frecce verdi indicano assenza di perdita di dati. Ad esempio, possiamo convertire in sicurezza int in long, e il risultato sarà lo stesso;
  • Freccia gialla nella conversione da long (o int) a float (o long) significa che a volte si verifica una perdita di dati a causa della precisione insufficiente di float (o 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; }

Un altro esempio di conversione implicita dei tipi sono le operazioni +, -, *, /. Devono essere eseguite su variabili dello stesso tipo di dato. Se così non fosse, C++ effettua automaticamente la promozione del tipo. Ad esempio, int / double -> double / double.

Un altro caso in cui si può incontrare la conversione implicita dei tipi sono le condizioni. Ad esempio, l'istruzione if.

Si aspetta che la condizione sia di tipo bool. Ma grazie alla conversione implicita dei tipi, possiamo passare altri tipi di dato come condizioni. Ecco un'immagine che mostra come vengono convertiti in bool:

question mark

Quale delle seguenti assegnazioni può causare perdita di dati a causa della conversione implicita di tipo in C++?

Seleziona la risposta corretta

Tutto è chiaro?

Come possiamo migliorarlo?

Grazie per i tuoi commenti!

Sezione 1. Capitolo 16

Chieda ad AI

expand

Chieda ad AI

ChatGPT

Chieda pure quello che desidera o provi una delle domande suggerite per iniziare la nostra conversazione

Sezione 1. Capitolo 16
some-alt