无法理解在little endian机器中用c进行类型转换后产生的输出

无法理解在little endian机器中用c进行类型转换后产生的输出,c,pointers,casting,C,Pointers,Casting,下面是C程序,输出为201。我不知道这怎么可能。请解释一下 #include <stdio.h> int main() { int number = 288; char * ptr; ptr = (char * ) & number; printf("%x", * ptr); ptr++; printf("%x", * ptr); return 0; } #包括 int main(){ 整数=288; char

下面是C程序,输出为201。我不知道这怎么可能。请解释一下

#include <stdio.h>
  int main() {
    int number = 288;
    char * ptr;
    ptr = (char * ) & number;
    printf("%x", * ptr);
    ptr++;
    printf("%x", * ptr);
    return 0;
  }
#包括
int main(){
整数=288;
char*ptr;
ptr=(字符*)&数字;
printf(“%x”,*ptr);
ptr++;
printf(“%x”,*ptr);
返回0;
}

这是在小endian机器的情况下。这个问题是在关于Geeksforgek的MCQ竞赛中提出的。但他们没有对此作出解释。

201是完全合理的(在little endian系统上):


变量
number
以这两个字节开始(在小端系统上):0x20、0x01。

UB。Printf如果退出unsigned int但得到字符。有什么理由否决投票吗?@P_uuj_uu你能提供一些参考吗?使用前search@BrijRajKishore在这种情况下,没有未定义的行为。这是printf的有效用法。看看我的答案。。。。因此,在两个
%x
之间可能应该插入一个逗号。并且还插入0x以使其可见,这些字节是作为十六进制说明符打印的。我把它解释为十进制。谢谢。