static int 和 int 你所踩过的坑

本文深入探讨了C语言编程中遇到的bug,特别是在使用Yacc自动生成器进行语法分析器开发时的问题。文章详细解释了static int与int的区别,强调了静态变量在函数调用中的作用。

对于一个刚进入大学就接触C语言的我,感觉对C还是比较了解的,但是在做编译原理大作业语法分析器的时候使用了Yacc自动生成器,虽然是自动生成,但是需要写一个辅助函数,就在写这个辅助函数的时候出现了这个特别奇怪的bug

先上代码

int yylex(void){
    static int done = 0;
    static int c;
    static int flag=0;
    if(done)return 0;
    if(flag==1){
        flag=0;
        if(c!=' '){
            if(c=='\n')done=1;
            return c;
        }
    }
    while((c=getchar())==' ');
    if(isdigit(c)){
        yylval = c-'0';
        while(isdigit(c=getchar())){
        yylval *=10;
        yylval +=c-'0';
    }
    flag=1;
    return (NUM);
    }
    else if(c=='\n')
    done=1;
    return c;
}

bug 比较复杂,在这里就不赘述了,这里进入到咱们今天的重点,static  int 和 int

静态变量就是要在程序的一开始就要载入,也就是它不是随着程序运行的时候而改变的

static int 和 int 在main函数中区别不大,但是如果涉及到子函数,那么区别就很大了。

static 可以看成是全局变量。

也就是说上面的代码中的状态变量都会随着函数的每一次调用而赋上初值

但是这个函数的初衷是要利用这些状态变量来进行一些跳转啊,循环啊之类的操作,所以这里需要设置成static

内容概要:本文聚焦于“基于改进电流解耦与电位平衡的T型三电平逆变器低电压穿越研究”,通过Simulink仿真实现,系统探讨了T型三电平逆变器在电网电压跌落情况下的低电压穿越(LVRT)能力。研究提出了一种改进的电流解耦控制策略与中点电位平衡控制方法,旨在提升逆变器在故障工况下的动态响应性能、系统稳定性及功率调节能力。通过构建详细的Simulink电磁暂态模型,验证了所提控制策略在抑制负序电流、维持直流侧中点电压稳定、实现快速有功与无功功率协调控制方面的有效性,为新能源发电系统并网的可靠运行提供了理论支持技术路径。; 适合人群:具备电力电子、自动控制及电力系统相关专业知识,熟悉MATLAB/Simulink仿真环境,从事新能源并网、逆变器控制策略研究、电能质量分析或电力系统仿真的研究生、科研人员及工程技术人员。; 使用场景及目标:① 深入理解T型三电平逆变器在低电压穿越过程中的控制难点,掌握改进电流解耦与中点电位平衡的核心控制原理;② 学习并实践在Simulink中搭建高保真度逆变器仿真模型的方法,掌握双环控制、负序分量处理、中点电位反馈调节等关键技术环节;③ 为开展相关课题研究、撰写学术论文或进行工程化设计提供可复现的仿真案例与理论依据。; 阅读建议:建议结合文中所述控制算法,动手搭建并调试Simulink仿真模型,重点关注电流内环与电压外环的参数整定、中点电位波动的抑制效果以及不同电网故障条件下系统的响应特性,从而深入理解控制策略与系统动态性能之间的内在联系。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值