Les variables j'ai catalogué lorsque vous effectuez des opérations mathématiques en C/C++?

Par exemple, quand je suis à la division de deux entiers et qui veulent un flotteur de retour, j'ai superstitiously écrire quelque chose comme ceci:

int a = 2, b = 3;
float c = (float)a / (float)b;

Si je n'ai pas jeté a et b de flotteurs, il va faire de division entière et retourner un int.

De la même façon, si je veux multiplier signé un nombre de 8 bits avec un entier non signé de 8 bits, je vais la jeter à signé de 16 bits avant de multiplier par crainte de débordement:

u8 a = 255;
s8 b = -127;
s16 = (s16)a * (s16)b;

Comment fonctionne exactement le compilateur se comporter dans ces situations, lorsqu'il n'est pas de la coulée, ou lors de la coulée seulement l'une des variables? Ai-je vraiment besoin de convertir explicitement toutes les variables, ou tout simplement celle de gauche ou celle de droite?

InformationsquelleAutor Jeremy Ruten | 2008-10-29