Bonjour.
que se passe-t'il si j'écris:
Est-ce que ça va poser un problème?Code:
1
2 unsigned int i = -1;
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
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)Code:unsigned int calcul_distance();
que va-til se passer avec le code:
il compile et il marche... j'ai même pas de warning pour la comparaison entre 'd' et '-1'Code:
1
2
3
4
5
6 unsigned int d = 0; d = calcul_distance(); if(d == -1){ printf("error"); }
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+