若char a[2]={'a','\97'};,则执行printf("%d,%c\n",a[0],a[1]);的结果是?

a[0]输出97我知道,但是在软件当中运行,输出的a[1]为什么是7啊?
#include <stdio.h>
int main()
{

char a[2]={'a','\97'};
printf("%d,%c\n",a[0],a[1]);
return 0;

}

\后面带数字的话只能是三位8进制或者3位16进制数,十六进制必须x开头,所以这个\97这是一个非法的字符,\9被认为是错误的输入,忽略掉了。

反义字符的原因,\9没意义,忽略,最后变成了'7'了。你可以试试'\9\9\97'

C不支持\97这种写法,在debug中它会莫名其妙被认为是数字14647,转换成8位整数就是55,7的ASCII码