This question already has answers here:
Closed 10 months ago.
What does an extra 0 in front of an int value mean?
(2个答案)
几天后我有一个C编程考试,在我得到的示例中,有一个关于位运算符的问题。现在我知道&,|,^,<>和他们做什么。
但我有点困惑:
当我测试它时,输出是:
17 42 59 0 59
但我不明白怎么做。021在二进制中是什么?
如果我把它取为21(如果我在它之前删除0,输出将完全改变)
有人能帮忙吗?
(2个答案)
几天后我有一个C编程考试,在我得到的示例中,有一个关于位运算符的问题。现在我知道&,|,^,<>和他们做什么。
但我有点困惑:
int main()
{
int i = 021, j = 0x2A, k,l,m;
k = i | j;
l = i & j;
m = k ^ l;
printf("%d, %d, %d, %d, %d\n",i,j,k,l,m);
return 0;
}
当我测试它时,输出是:
17 42 59 0 59
但我不明白怎么做。021在二进制中是什么?
如果我把它取为21(如果我在它之前删除0,输出将完全改变)
有人能帮忙吗?
最佳答案
021在二进制中是什么?如果我把它取为21(如果我在它之前删除0,输出将完全改变)
以0
开头的整数文本是八进制数。如果删除0
,则它是十进制数。因此021
的值是2 * 8 + 1
,即17
。二进制表示是10001
。
如果删除0
,i
的值为21
,二进制表示为10101
。
因此,当在不同的操作中使用时,输出会相应地改变。
由于您在printf语句中使用转换说明符d
,所以所有打印的值都是十进制的。
10-07 15:20