Цель состоит в том, чтобы печатать двоичный вывод целых чисел -ve или + ve, а вывод правилен, когда мы объявляем переменную с подписанным, но неспособным понять поведение, когда переменная объявлена как без знака.Unsigned char является печатью-ответом при печати в двоичном формате
int main() {
unsigned char num = -1; /* unsigned int */
int i = 0;
/* Loop to print binary values */
for (i = 0 ; i < 8; i++) {
if(num & 128u)
{
printf("1 ");
}
else
{
printf("0 ");
}
num= num<<1;
}
printf("\n");
return 0;
}
выход печатается как "1 1 1 1 1 1 1 1"
, который равен -1; Но я дал unsigned int
в качестве входных данных. Как это работает?
Можете ли вы объяснить в своем вопросе, что вы ожидаете от вывода, и почему? – Baldrick
У вас нет 'unsigned int', у вас есть' unsigned char'. – mch