你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

局部变量初始化时未赋值会导致什么后果

[复制链接]
Ha~ha~ 提问时间:2026-4-23 00:07 / 未解决

收藏 评论5 发布时间:2026-4-23 00:07

举报

5个回答
fafa1 回答时间:2 小时前

大概率 得不到 想要的结果!

老牛洋车 回答时间:3 小时前

定义变量时可以不赋值,但使用前一定要赋值,否则结果就有可能达不到预期。

从楼主的代码中没有看到定义的变量尚未赋值就使用的状况。其中的void SPIWriteByte(unsigned int writedat)函数中定义的用于循环的变量i,虽然在定义时未赋值,但在循环语句for(i=0;i<32;i++)里已经赋初值为0了。

Ha~ha~ 回答时间:10 小时前
代码如下:

static void SPI_Delay_(unsigned int t)

{

while(t--);
}

void SPIWriteByte(unsigned int writedat)

{

unsigned char i;      



for(i=0;i<32;i++)

{

        LL_GPIO_ResetOutputPin(GPIOE, LL_GPIO_PIN_2);



        SPI_Delay_(20);



        if(writedat & 0x01)

                LL_GPIO_SetOutputPin(GPIOE, LL_GPIO_PIN_4);

        else

                LL_GPIO_ResetOutputPin(GPIOE, LL_GPIO_PIN_4);

         

        writedat>>=1;


        LL_GPIO_SetOutputPin(GPIOE, LL_GPIO_PIN_2);



        SPI_Delay_(40);

}

LL_GPIO_ResetOutputPin(GPIOE, LL_GPIO_PIN_2);
}

void load_dsp_program(const unsigned int pData[],unsigned int len)

{

unsigned int i = 0;

LL_GPIO_ResetOutputPin(GPIOE, LL_GPIO_PIN_1);

delay_us(20);

for(i=0;i<len;i++)

{

        SPIWriteByte(pData[i]);

}



delay_us(50);                     

LL_GPIO_SetOutputPin(GPIOE, LL_GPIO_PIN_1);
}
Ha~ha~ 回答时间:2 小时前

老牛洋车 发表于 2026-4-23 07:47
定义变量时可以不赋值,但使用前一定要赋值,否则结果就有可能达不到预期。</p>
<p>从楼主的代码中没有看到定 ...

[md]我理解的也是这样,在for循环的开始给赋值了,应该就是从0开始,但在不开优化的情况下还是异常。

摩洛哥的制砖匠人 回答时间:1 小时前

调整编译器等级,编译的时候警告

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版