Bonjour.

que se passe-t'il si j'écris:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
 
unsigned int i = -1;
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
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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+