tigcc

C'est simple : il y a des fois où avant d'utiliser une variable il faut mettre le type (ex : char, long,double…), mais il y a des fois où il ne faut pas les mettre (dans les conditions par exemple). Alors je me demandais s'il existait un règle précise la dessus.
 
Ah, ça s'appelle des cast ?
Bref par exemple tu vas mettre
Bloc de code:
long ma_variable = 15
En revanche
Bloc de code:
if (ma_variable == 10)
Dans un cas il faut mettre ce que tu appelle le cast et dans l'autre il ne faut pas.
Donc je me demandais si il existe une règle précise ou si il faut apprendre tous les cas.
 
Non, le "cast" est le fait de préciser le type de la variable lors d'une opération:
Bloc de code:
UnType operation_quelconque()
{
  UnType val_retour;

  reurn val_retour;
}

int main()
{
  MonType toto;

  toto = (MonType) operation_quelconque();
}
Dans ton premier bout de code tu déclares et définies ta variable avec la valeur 15.
Dans ton second bout de code, tu l'utilises.
Franchement si tu n'as pas encore compris ce principe, arête tout ce que tu fais et replonge toi dans ton bouquin de C, parce que là c'est plus que la base. :siffle:
 
Exemple de cast:

double maFonction(double entree)
{
double sortie=0;
// blah blah blah ...
return sortie;
}

int main()
{
int monEntree=10;
double resultatDeMaFonction=maFonction((double) monEntree);

return 0;
}


Dans cet exemple je déclare monEntree comme étant un entier (int).
J'appelle ensuite maFonction qui demande un double en entrée.
Si je ne veux pas changer de type pour monEntree, je dois la transformer en double avant de la passer dans maFonction, sinon, ça compile pas. L'opération (double) monEntree permet ce type de transformation.
C'est ce qu'on appelle un casting. Transtypage en français.
Il est possible de caster tout est n'importe quoi. Il faut simplement faire en sorte que les données soient cohérentes. Autre exemple de transtypage simple: un short en char. Dans ce cas, le short et le char sont rigoureusement de même longueur (2 octets) et sont représenté de la même manière en mémoire.

Cordialement.

Fred.
 
Ok, merci boulifb, donc si je récapitule, on met la cast :
* pour définir une variable
* pour effectuer un casting
C'est bien ça ?
 
Un casting (transtypage) sert à changer de type de données.
Dans l'exemple que j'ai donné, on transforme un entier en double afin de faire correspondre l'entrée de la fonction maFonction.

J'ai mis l'appel de fonction dans la déclaration de la variable.

J'aurai très bien pu déclarer la variable lui assigner 0 et quelques lignes plus bas appeler maFonction.
 
  • J’aime
Réactions: vibra