c - else if 条件执行,尽管条件不成立

标签 c

我正在尝试使用 this circuit 跟踪 PLECS(电力电子仿真软件)中的引用。 。 C 脚本是我在下面编写的代码,它基本上告诉 IGBT 器件打开 (0) 和关闭 (1)。但是,我不明白为什么当电容器 (VCS) 两端的电压明显不接近零伏时,我会得到“0”作为输出,如shows this figure .

int track(double ref, double isb, double vcs) {
    int out;

    if(ref > isb){
        out = 1;
    }
    else if(ref < isb && vcs == 0.0){
            out = 0;
        }

    return out;
}

在 C 脚本 block 中,信号值只能通过使用宏来访问,而不能通过指针算术来访问。例如,我声明输入和输出如下:

#define REF Input(0) // Reference Current
#define ISB Input(1) // Snubber Output Current
#define VCS Input(2) // Capacitor Voltage
#define IGBT Output(0) // IGBT Firing

最佳答案

您的figure显示 ref < isb 的地方和vcs不为零。你的if都不是也不是你的else if包含此条件,因此程序执行不会经过它们中的任何一个子句。因此,对于这些情况,代码实际上是:

int out;

return out;

因此,它返回一个未初始化的值。这可能恰好具有返回零的效果,但该行为是不可靠的。

要解决此问题,请初始化 out在这些情况下您想要返回的内容或添加 else设置它的子句。

关于c - else if 条件执行,尽管条件不成立,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50089324/

相关文章:

c - 将 typedef 关键字与结构一起使用

c - 程序fork 4个子进程,每个子进程都会做不同的操作

c - sizeof(struct ExampleStruct) 或 sizeof( *VarExampleStruct) - 哪个是更好的编码实践?

c - 段错误 iPhone 可执行文件

c - 恶意文件上传

c - 返回结构和 Int 的结构

c - 了解 C 中 const buffer 和 read() 的使用

c - 调用 mxCreateDoubleMatrix() 时什么会导致段错误?

html - 如何使用 lex 在 html 标签内打印文本

c - mq_unlink 将 errno 设置为 EEXIST