大一C语言小白,字符串数组 为何方括号里数字与字符个数一样不出错?不是要多一个\0吗?

图片说明
如图,按照教学应该是

char arr[5]="hipk";

然后[4]是0才对吧。。。不理解为什么我尝试图片那样,多输入一个k却不出错。
真的晕了图片说明
把中括号里的5删掉又自动加上了[5]为0

数组越界编译器不会报错,但是运行结果未知arr[5]不在arr范围内了