Рассмотрим эту маленькую программу:
#include <stdio.h>
int main()
{
char c = 0xFF;
printf("%d\n", c);
return 0;
}
Его вывод -1
, как и ожидалось (учитывая, что char
подписано в моем
система). Я пытаюсь напечатать 255
. Это из
Конечно, упрощение реальной ситуации, где я не могу просто определить
c
как без знака.
Первым возможным изменением будет использование %u
вместо средства форматирования, но
здесь применяются обычные правила продвижения по типу, и номер печатается как
2 32 - 1.
Так есть ли способ прочитать подписанный символ как неподписанный до того, как получит
повышен до INT? Я мог бы создать указатель на неподписанный символ, установленный на
адрес c
, и разыщите его позже, но не уверен, что это лучший
подход.