c - Else if 条件执行,尽管条件不成立
问题描述
我正在尝试使用此电路跟踪 PLECS(电力电子仿真软件)中的参考。C-Script 是我下面的代码,它基本上告诉 IGBT 设备打开 (0) 和关闭 (1)。但是,当很明显电容器(VCS)两端的电压甚至不接近零伏时,我无法理解为什么我得到“0”作为输出,如图所示。
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 脚本块中,信号值只能通过使用宏来访问,而不是通过指针运算。例如,我声明 Inputs 和 Output 如下:
#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
解决方案
您的数字显示了ref < isb
不vcs
为零的地方。yourif
和 your都不else if
包含此条件,因此程序执行不会通过它们的任何一个子句。因此,对于这些情况,代码实际上是:
int out;
return out;
因此,它返回一个未初始化的值。这可能恰好具有返回零的效果,但这种行为是不可靠的。
为了解决这个问题,要么初始化out
你想要在这些情况下返回的内容,要么添加一个else
设置它的子句。
推荐阅读
- javascript - 优化将对象键值推送到数组的循环
- go - 带 ttl 的 etcd 互斥锁
- sql-server - T-SQL ROW_NUMBER() 在没有桨的情况下上溪
- java - 带有注释的Java Spring Data JPA不适用于where
- r - 左加入多个列表 tbl
- powershell - 批量重命名而不更改文件类型
- visual-studio-2017 - 如何将包管理器控制台设置为自动出现
- c# - 在 C# 中禁用预加载的组合框
- javascript - 如何从角度的复杂方法返回 ArrayList()
- java - Apache Ant Java API 未执行所有具有依赖关系的目标