Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Impara Conversione Implicita Dei Tipi | Altri Tipi di Dati e Concetti
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 rimuovendo la parte decimale).

La conversione di tipo implicita 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 ed effettuerà una conversione di tipo se riceve un valore diverso).

  • 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 modo sicuro int in long, e il risultato rimane invariato;
  • Freccia gialla nella conversione da long (o int) a float (o long) significa che talvolta 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 ulteriore esempio di conversione implicita dei tipi riguarda le operazioni +, -, *, /. Queste dovrebbero 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 è nelle condizioni. Ad esempio, nell'istruzione if.

Questa si aspetta che la condizione sia di tipo bool. Tuttavia, grazie alla conversione implicita dei tipi, è possibile utilizzare 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 dei tipi in C++?

Select the correct answer

Tutto è chiaro?

Come possiamo migliorarlo?

Grazie per i tuoi commenti!

Sezione 4. Capitolo 6

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 4. Capitolo 6
some-alt