C 数据类型存储

C 数据类型存储,c,types,C,Types,下面的代码打印255,但是如果我将0255指定给x,就像在第二行中一样,代码打印173 有什么解释吗 void main() { unsigned long x = 255; /* unsigned long x = 0255;*/ unsigned char *ptr = &x; printf("%u",*ptr); getch(); } 当一个数字前面有一个“0”时,它被视为一个八进制数。八进制中的255是十进制中的173。当一个数字在其他数

下面的代码打印255,但是如果我将0255指定给x,就像在第二行中一样,代码打印173

有什么解释吗

void main()
{
    unsigned long x = 255;
    /* unsigned long x = 0255;*/
    unsigned char *ptr = &x;
    printf("%u",*ptr);
    getch();
}

当一个数字前面有一个“0”时,它被视为一个八进制数。八进制中的255是十进制中的173。

当一个数字在其他数字前面有一个“0”时,它被视为八进制数。八进制的255是十进制的173

unsigned char x = 0255;
0255被认为是一个八进制整型文字。这是因为您可以将int文本分配给字符,而八进制0255在十进制表示法中是5*8^0+5*8^1+2*8^2=173

有关不同形式的符号字符串文字的更多信息,请访问,但请快速参考:

unsigned char x = 0255; // Octal -> 173 in decimal
unsigned char x = 255; // Decimal -> 255 in decimal
unsigned char x = 0x2F // Hexadecimal -> 47 in decimal
0255被认为是一个八进制整型文字。这是因为您可以将int文本分配给字符,而八进制0255在十进制表示法中是5*8^0+5*8^1+2*8^2=173

有关不同形式的符号字符串文字的更多信息,请访问,但请快速参考:

unsigned char x = 0255; // Octal -> 173 in decimal
unsigned char x = 255; // Decimal -> 255 in decimal
unsigned char x = 0x2F // Hexadecimal -> 47 in decimal