Я пытаюсь вызвать неявное преобразование типов между int
и unsigned int
в некотором коде, который я написал. Компилятор дает неожиданный результат.
В соответствии с правилами неявного преобразования целых чисел со знаком и без знака (одинакового ранга), код должен выдавать большое положительное число в качестве вывода.
unsigned int q = 90;
int w = -1;
printf("q+w=%u\n", q + w);
В качестве выходных данных для этой программы, которые вы можете просмотреть здесь , результат равен 89. Я ожидал бы, что int w
будет приведен к типу unsigned int
, прежде чем произойдет арифметика, и произвести ожидаемый результат.