unsigned int value = 1860;
int data = 1300;
if((data - value) > 0)
{
printf("Why it is printing this");
}
wyjściowa: Dlaczego jest wydrukowanie tegoOdejmij Signed całkowitą liczba całkowita bez znaku
ja nie rozumiejąc, dlaczego odejmowanie podpisanego formularza unsigned przechodzą przez „jeśli”, chociaż wartość zmiennej „dane” jest mniejsza niż zmienna "wartość". Jestem bardzo ciekawy, jak podpisane i niepodpisane odjęcie "mały błąd", ale prowadzi do dużego, ponieważ używałem funkcji "Opóźnienie" zamiast "printf", a moje zadanie było opóźnione, co powodowało chaos.
unsigned int value = 1860;
int data = 1300;
if((data - value) > 0)
{
Delay(data - value);
}
Ta część jest ciągle opóźnia i moim zadaniem nie ends.That oznacza wartość „data” - wartość jest ujemna, dlatego idzie na nieskończonej oczekiwania. Jednocześnie przechodzi przez "jeśli", gdzie warunkiem jest "wartość-danych"> 0. Moja wątpliwość, jeśli podpis zostanie przekształcona w niepodpisane i przechodzi przez "jeśli", to dlaczego daje wartość ujemną do funkcji "Opóźnienie".
Wartość "wartości danych" nie jest ujemna, jest przeciwnie, to znaczy zbyt duża. Spróbuj tego: 'printf ("% u ", wartość danych);' – skrtbhtngr