You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C语言静态变量初始化异常求助:变量未按预期设为0

静态变量初始化异常问题

我遇到一个静态变量初始化的问题:程序启动时该变量未按预期初始化为0,而是呈现随机值。

文件1中的函数:

void setInput()
{
    /*.... Code ...*/
    sysUpdate(SysOutput.u16_state);
    
    /*.... Code ...*/
}

该函数会调用文件2中的sysUpdate函数:

bool sysUpdate(uint16 state)
{
    static uint32 u32_Counter = 0;
    
    if (Condition)
    {
        u32_Counter += 30;
        if (u32_Counter > 30000)
        {
            u32_Counter = (uint32)0;
            /*.... Code ...*/
        }
    }

    /*.... Code ...*/
}

问题在于,尽管我将u32_Counter初始化为0,但它仍会取随机值,且首次运行时Condition条件始终为真。请问可能是什么原因导致这个问题?


问题原因更新

此问题由另一静态数组的越界写入导致。具体问题代码如下:

static uint8 state[xNUMBER][yNUMBER]; 
const uint8 state1[xNUMBER][yNUMBER] = {{0, 1, 0, 0}, {1, 0, 0, 0},{1, 1, 1, 1}}; 
const uint8 state2[xNUMBER][yNUMBER] = {{0, 1, 1, 1}, {1, 1, 0, 0},{1, 1, 1, 1}}; 
length = sizeof(state)/sizeof(state[0][0]);
for(i = 0; i < length; i++)
{
    for (j = 0; j < length; j++)
    {
        if(condition)
        {
            state[i][j] = state1[i][j];
        }
        else           
        {
            state[i][j] = state2[i][j];
        }
    }
}

内容的提问来源于stack exchange,提问作者SmallX

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.30 05:22:22