typecasting de non signé dans C

int a = -534;
unsigned int b = (unsigned int)a;
printf("%d, %d", a, b);

imprime -534, -534

Pourquoi le transtypage de ne pas prendre de place?

Je m'attendais à être -534, 534


Si j'ai modifier le code pour

int a = -534;
unsigned int b = (unsigned int)a;
if(a < b)
  printf("%d, %d", a, b);

ses pas l'impression de rien... après tout a est à moins de b??

  • Vous voulez probablement vérifier votre compilateur docs et de voir si il ya une option pour vérifier printf spécificateurs de format. gcc a -Wformat, qui vous aura prévenu sur le %d et %u chose au moment de la compilation.
  • stackoverflow.com/questions/50605/...
  • Cela ne devrait pas avoir un C++ tag.
InformationsquelleAutor Lazer | 2010-03-01