<分区>
下面的代码打印255
,但是如果我将0255
分配给x
,如第二行,代码打印 173
!
这有什么解释吗?
void main()
{
unsigned long x = 255;
/* unsigned long x = 0255;*/
unsigned char *ptr = &x;
printf("%u",*ptr);
getch();
}
<分区>
下面的代码打印255
,但是如果我将0255
分配给x
,如第二行,代码打印 173
!
这有什么解释吗?
void main()
{
unsigned long x = 255;
/* unsigned long x = 0255;*/
unsigned char *ptr = &x;
printf("%u",*ptr);
getch();
}
最佳答案
unsigned char x = 0255;
0255
被认为是八进制 int
文字。这是可行的,因为您可以将 int
文字分配给字符,而八进制 0255
是 (5*8^0)+(5*8^1)+(2 *8^2) = 173
十进制。
访问the reference有关不同形式的符号字符串文字的更多信息,但为了快速引用:
unsigned char x = 0255; // Octal -> 173 in decimal
unsigned char x = 255; // Decimal -> 255 in decimal
unsigned char x = 0x2F // Hexadecimal -> 47 in decimal
关于c - 数据类型存储,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35244993/