c语言共用体+存储问题

我想着结果是4321 上机了一下是1234 ,这是和小端大端有关系吗?
还有是代码中是s[5]='\0',我猜是要在结尾封口子以便%s输出前面的数据,可是总共s才定义了5个字节啊哪里来的s[5]不是最多到4吗


#include <stdio.h>

union{
    char s[5];
    int a;
}x;

int main()
{   
    x.a='4'*256*256*256+'3'*256*256+'2'*256+'1';
    x.s[5]='\0';
    printf("%s\n",x.s);    
    return 0;
}


你说的对,应该是x.s[4] = 0;
是和小端大端有关系。大部分处理器都是高字节在后,低字节在前的。所以输出是1234