C语言数组赋值问题,超出初始限定值

img

img


为什么图上的字符数组能赋值能编译成功?字符串里面还隐藏'\0'吗?

char a[3]="123";是定义一个3个字节的数组,初始值赋为“123”的字符串(后面还会影藏一个'\0'),虽然已经空间不够了,'\0'并没有赋值给a数组,但是编译器不会去检查这个错误。