【发布时间】:2016-03-19 16:55:54
【问题描述】:
目标是打印 -ve 或 +ve 整数的二进制输出,当我们声明带符号的变量时输出是正确的,但无法理解变量声明为无符号时的行为。
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 作为输入。这是如何工作的?
【问题讨论】:
-
你能在你的问题中解释你期望输出是什么,为什么?
-
你没有
unsigned int,你有unsigned char。
标签: c