请说明为什么下面程序的输出是JKLM??而不是MLKJ? 请解释以下程序的输出。。。。 int main() { 无符号整数i=0,j=0; 字符c='J'; i=(无符号整数)c; i |=(unsigned int)(c+1)

请说明为什么下面程序的输出是JKLM??而不是MLKJ? 请解释以下程序的输出。。。。 int main() { 无符号整数i=0,j=0; 字符c='J'; i=(无符号整数)c; i |=(unsigned int)(c+1),c,unix,bitwise-operators,shift,C,Unix,Bitwise Operators,Shift,您的系统似乎是little endian()。这意味着最低有效字节(不带移位的字节)是%s期望的字符数组中的第一个字节。您的系统似乎是little endian()。这意味着最低有效字节(不带移位的字节)是字符数组中%s所需的第一个字节。标准的挑剔回答:因为您的程序有未定义的行为。%s转换说明符需要一个char*或unsigned char*参数,但您传递给它一个unsigned int* 查看窗帘后面的答案:您的计算机可能是little endian,因此最低有效字节的内存地址最低。标准的挑剔

您的系统似乎是little endian()。这意味着最低有效字节(不带移位的字节)是%s期望的字符数组中的第一个字节。

您的系统似乎是little endian()。这意味着最低有效字节(不带移位的字节)是字符数组中%s所需的第一个字节。

标准的挑剔回答:因为您的程序有未定义的行为。
%s
转换说明符需要一个
char*
unsigned char*
参数,但您传递给它一个
unsigned int*


查看窗帘后面的答案:您的计算机可能是little endian,因此最低有效字节的内存地址最低。

标准的挑剔答案:因为您的程序有未定义的行为。
%s
转换说明符需要一个
char*
无符号char*
参数,但您传递了it一个
无符号整数*


看看窗帘后面的答案:您的机器可能是little endian,因此最低有效字节的内存地址最低。

如果H2CO3这么说(而不是不使用malloc),你应该听。@xaxxon我相信你会喜欢我在推特上的个人简介,去看看吧:是的,我几周前确实在检查,并注意到了。@H2CO3有时候当我读你的帖子时,你会觉得自己像个直言不讳的恶霸,但是我们又会对一个每天都面对一些恶棍的人有什么期待呢这种白痴和不体谅他人的愚蠢,我开始发自肺腑地大笑,并欣赏你的评论,如果H2CO3这么说的话(除了不演马洛克的),你应该听。@xaxxon我相信你会喜欢我在推特上的个人简介,去看看吧:是的,我几周前确实在检查,并注意到了。@H2CO3有时候当我读你的帖子时,你会觉得自己像个直言不讳的恶霸,但是我们又会对一个每天都面对一些恶棍的人有什么期待呢如此愚蠢和不体谅他人的愚蠢,我开始尽情地笑,享受你们的评论
Please explain the output of below program....

int main()
{
unsigned int i=0,j=0;
char c = 'J';
         i = (unsigned int) c;
         i|=(unsigned int) (c+1)<<8;
         i|= (unsigned int) (c+2) <<16;
         i|= (unsigned int) (c+3) <<24;
printf("\n%s",&i);
}