全局变量赋初值异常,ads1.2

我使用的是mtk6261,ADS1.2的编译器。我在某个.c文件,定义了一个全局变量,同时赋初值,然后在程序在打印出来,打印的结果跟我赋的初值是不一样的。使用cosnt去修饰就可以,或者重新在程序中再赋值一次。我看了项目的其他文件,很默契的基本上不在全局变量赋初值,但是该项目的同事已经不在这边了,无法获得别的信息了。
static uint8_t device_manufacturer_id[5] = "{31, 32, 33, 34, 35}";(hex数值,问题不给用0x)

void test_vol(void)
{
uint8_t i;
for(i=0;i<5;i++)
{
logDebug("制造商id[%d]\r\n",device_manufacturer_id[i]);
}
}
打印出来的是67 43 43 32 108。
我以为是个例,所以重新定义一组新的全局变量,情况也是赋初值跟打印的不一致,需要重新赋值才行。
目前这个问题已经疑惑好久了,希望有人能帮忙解惑,感谢。

试过了赋不同的初值,其输出结果都是一样,不过改变了数组的长度,输出的结果就会改变。但是这个全局变量并没有在那边使用过,也没有看到明显的内存溢出之类的行为。

为啥 "{31, 32, 33, 34, 35}"要带双引号呢

你给数组赋值了个字符串
把双引号删了

兄弟,我怀疑你是编译器的问题,你可以随便弄个小例子。
类似在main 之前定义三个全局变量:

  1. int x1 = 1;
  2. static int x2= 2;
  3. static int x3[] = {10,20,30,40};
    然后你在main 里面打印出来试试。