Bonjour, j'ai récemment recommencé à programmer en C et j'ai créé un petit programme bien simple qui convertit des valeurs décimales en nombres binaires. La fonction qui s'occupe de la conversion retourne une valeur de type unsigned long int. Étant donné le type retourné, mon programme ne convertis que les nombres inférieurs à 1023, (puisque la valeur maximale d'une variable de type unsigned long int est 4 294 967 295). Mais voilà, mon programme teste la valeur de son argument pour vérifier que celui-ci est bien inférieur à 1023, et si ce n'est pas le cas, il retourne -1. Pourtant, ma fonction est sensée retourner une valeur non-signée et mon compilateur ne me retourne aucune erreur ou avertissement. Le programme fonctionne très bien, mais je ne comprends pas pourquoi mon compilateur ne me retourne pas d'erreur ou d'avertissement... y'aurait-il une conversion implicite?
Partager