我正在阅读Kochen的书"C语言编程",我很困惑他解释了多维数组的初始化

特别是,我不理解下面句子的含义注意,在这种情况下,需要内部大括号来强制正确初始化.没有它们,第三行的前两行和前两个元素将被初始化.我不确定这句话意味着什么.
int letters[] = {['A'] = 4, ['B'] = 8, ['E'] = 3, ['I'] = 1, ['O'] = 0, ['S'] = 5};
Run Code Online (Sandbox Code Playgroud)
当我初始化上面的数组字母时,我的假设是在每个大写字母的索引处,该值将是数字,即if ['A'] = 4,然后在index处,'A'该值将为4,其余未初始化的值将默认为0 .
但是当我打印数组字母的所有值时,我得到这个输出:
00000000000000000000000000000000000000000000000000000000000000000480030001000000000514303876720941309621-1392458268143038767232767-197939865932767-1979398659327670010143038792832767
我不知道负数来自哪里.
我在相同格式的不同文件中有多个 init 文件。我正在尝试为所有这些参数添加一个名为“newparameter”的新参数。我正在尝试使用 pycharm 的查找和替换正则表达式功能来执行此操作,但到目前为止未成功。
我有一个初始化函数如下(删除了参数的实际名称)
def __init__(self, param1, param2, param3, param4, param5, param6, param7, param8=None):
Run Code Online (Sandbox Code Playgroud)
正则表达式查找文本: def __init__\(.*\)
正则表达式替换文本: def __init__($1, newparam="Default")
查找文本有效,只是替换不起作用。我得到的错误是:替换错误。您输入了格式错误的替换字符串 'def __init__($1,newparam="Default")'
我究竟做错了什么?