Bonjour.
que se passe-t'il si j'écris:
Est-ce que ça va poser un problème?
en tout cas le compilateur l'accepte et ça a l'air de marcher.
je m'explique:
je veux écrire une fonction dont la valeur de retour est supposée être un entier positif (par exemple une fonction qui calcule une distance... une distance ça ne peut pes être négatif par définition. du coup ma fonction va retourner un unsigned int
unsigned int calcul_distance();
si il y a une erreur dans ma fonction, ça m'arrange de retourner une valeur du genre -1, -2, etc... (si mes int sont codés sur 32 bits, si je retourne -1, ça va en fait retourner 0xffffffff, soit 4 milliards et des poussières... c'est une "distance" que je peux raisonnablement considerer comme fausse)
que va-til se passer avec le code:
1 2 3 4 5 6
|
unsigned int d = 0;
d = calcul_distance();
if(d == -1){
printf("error");
} |
il compile et il marche... j'ai même pas de warning pour la comparaison entre 'd' et '-1'
Mais je me pose la question: Est-ce que ça va marcher avec tous les compilos?
Et si oui, a quoi ça sert d'avoir 2 types distinct (int et unsigned int) alors que visiblement ils sont traités pareil?
merci!
a+
Partager