Что я знаю, так это то, что UNSIGNED INT
не может принимать отрицательные значения.
Если я возьму maximum value
из UNSIGNED INT
и увеличу его, я должен получить ZERO
, то есть minimum value
, а если я возьму minimum value
и уменьшу его, я должен получить maximum value
.
Тогда почему это происходит?
#include <stdio.h>
#include <stdlib.h>
#include <limits.h>
int main()
{
unsigned int ui;
ui = UINT_MAX;
ui ++;
printf("ui = %d", ui);
ui = 0;
ui --;
printf("\n");
printf("ui = %d", ui);
return EXIT_SUCCESS;
}
Вывод:
ui = 0
ui = -1
%d
? разве это не должно быть%u
? - person WhozCraig   schedule 05.03.2015%d
говорит рассматривать его как целое число, и это так. - person Retired Ninja   schedule 05.03.2015