局部变量赋值问题
-
IAR环境
void test(void)
{
UINT8 A[4]={0x01,0x02,0x03,0x04};
UINT8 B[4]={0x01,0x02,0x03,0x04};
printf("%d,%d,%d,%d",A[0],A[1],A[2],A[3]);
printf("%d,%d,%d,%d",B[0],B[1],B[2],B[3]);
}
发现数组B不等于{0x01,0x02,0x03,0x04}; 变为{0x75,0x46,0x85,0x68}
函数改为如下测试:
void test(void)
{
UINT8 A[4]={0x01,0x02,0x03,0x04};
UINT8 B[4]={0x01,0x02,0x03,0x04};
printf("%d,%d,%d,%d",A[0],A[1],A[2],A[3]);
B[0]=0x01;
B[1]=0x02;
B[2]=0x03;
B[3]=0x04;
printf("%d,%d,%d,%d",B[0],B[1],B[2],B[3]);
}
发现数组A不等于{0x01,0x02,0x03,0x04}; 变为{0x75,0x46,0x85,0x68}函数改为如下测试:
void test(void)
{
UINT8 A[4]={0x01,0x02,0x03,0x04};
UINT8 B[4]={0x01,0x02,0x03,0x04};
A[0]=0x01;
A[1]=0x02;
A[2]=0x03;
A[3]=0x04;
printf("%d,%d,%d,%d",A[0],A[1],A[2],A[3]);
B[0]=0x01;
B[1]=0x02;
B[2]=0x03;
B[3]=0x04;
printf("%d,%d,%d,%d",B[0],B[1],B[2],B[3]);
}
两个数组数据均正确以上现象说明局部变量定义的时候初始化值有可能会被改变?使用的时候需要重新赋值?
发帖前请查看
帮助没办法联网的电脑使用YCT
帮助改进和优化YT CONFIG TOOL,有机会抽取YTM32B1ME0 EVB哦...