int index = stru_x.front().index; if( (qAbs(box_old_angle.at(index) == 90)) || (qAbs(box_old_angle.at(index) == 270 ))) { min_y -= box_old_l.at(stru_x.front().index)/scale_; min_x -= box_old_w.at(stru_x.front().index)/scale_; } else { min_y -= box_old_w.at(stru_x.front().index)/scale_; min_x -= box_old_l.at(stru_x.front().index)/scale_; }为什么只进入else的部分
时间: 2024-04-07 15:27:42 浏览: 23
这段代码中只会进入else部分的原因是因为 if 语句中的条件判断有问题。
判断条件 `qAbs(box_old_angle.at(index) == 90)` 应该是 `qAbs(box_old_angle.at(index)) == 90`,即判断 `box_old_angle` 中第 `index` 个元素的绝对值是否等于 90。
同理,判断条件 `qAbs(box_old_angle.at(index) == 270)` 应该是 `qAbs(box_old_angle.at(index)) == 270`,即判断 `box_old_angle` 中第 `index` 个元素的绝对值是否等于 270。
因为原来的判断条件都是 `qAbs()` 函数与一个布尔值的比较结果,结果永远为真或为假,与预期的判断条件不符,所以只会进入 else 部分的代码。
相关问题
if(PULSE_SINE == stru_Pulse.IPD_Mode) { s_Curr_d_q_ref.Id = 0; s_Curr_d_q_ref.Iq = s_StartVar.Iq_Ref; } else { s_Curr_d_q_ref.Iq = 0; s_Curr_d_q_ref.Id = s_StartVar.Iq_Ref; } s_Volt_d_q.Ud = PID_CALC2(&PID_ID, s_Curr_d_q_ref.Id, s_Curr_d_q.Id); PID_IQ.Upper_Output = Vector_Vq_Limit(&s_Volt_d_q.Ud); s_Volt_d_q.Uq = PID_CALC2(&PID_IQ, s_Curr_d_q_ref.Iq, s_Curr_d_q.Iq); s_Volt_alfa_beta = RevPark(s_SinCos_Val, s_Volt_d_q);
这段代码是一段嵌入式系统中的C语言代码,主要完成了以下几个功能:
1. 判断脉冲方式:根据变量stru_Pulse.IPD_Mode的值是否为PULSE_SINE,来决定电流的控制方式。
2. 设定电流参考值:根据变量s_StartVar.Iq_Ref,来设定电流参考值,以控制电机的运动。
3. 计算电流控制器的输出:根据电流的参考值和实际值,使用PID算法计算电流控制器的输出值。
4. 进行电压矢量限幅:限制电压的幅值不超过一定范围。
5. 进行反Park变换:将直角坐标系下的电压转换为三相交流电压。
总之,这段代码是嵌入式系统中电机控制部分的代码,用于实现电机的精确控制。
Oracle 下SQL语句怎么写 SELECT @ROWNUM := @ROWNUM + 1 AS TEMPRANK, @INCRNUM := CASE WHEN @ROWTOTAL = OBJ.YLCOUNT + 1 THEN @INCRNUM WHEN @ROWTOTAL := OBJ.YLCOUNT + 1 THEN @ROWNUM END AS FILERANK, OBJ.* FROM ( SELECT DOCINFO.TITLE, DOCINFO.DOC_ID AS DOCID, DOCINFO.DOC_TYPE AS DOCTYPE, U.USER_NAME AS AUTHORNAME, CONCAT( U.USER_NAME, '/', CASE WHEN O.SHORT_NAME = '' THEN '无' ELSE O.SHORT_NAME END ) AS USERNAME, IFNULL( DOCINFO.DOWNLOAD_NUM, 0 ) AS YLCOUNT FROM DOC_INFO DOCINFO, SYS_USERS U, SYS_ORGAN O, sys_stru WHERE DOCINFO.VALID_FLAG = '1' AND IFNULL( DOCINFO.DOWNLOAD_NUM, 0 ) != 0 AND U.USER_ID = DOCINFO.AUTHOR_ID AND sys_stru.STRU_ID = U.DEPARTMENT_ID AND O.ORGAN_ID = sys_stru.ORGAN_ID GROUP BY DOCINFO.DOC_ID, U.USER_NAME ORDER BY DOCINFO.DOWNLOAD_NUM DESC, DOCINFO.TITLE DESC ) OBJ, ( SELECT @ROWNUM := 0, @ROWTOTAL := NULL, @INCRNUM := 0 ) R
在 Oracle 中,可以将该 SQL 语句写成如下形式:
```
SELECT TEMPRANK, FILERANK, TITLE, DOCID, DOCTYPE, AUTHORNAME, USERNAME, YLCOUNT
FROM (
SELECT DOCINFO.TITLE, DOCINFO.DOC_ID AS DOCID, DOCINFO.DOC_TYPE AS DOCTYPE,
U.USER_NAME AS AUTHORNAME, CONCAT(U.USER_NAME, '/', CASE WHEN O.SHORT_NAME = '' THEN '无' ELSE O.SHORT_NAME END) AS USERNAME,
IFNULL(DOCINFO.DOWNLOAD_NUM, 0) AS YLCOUNT,
@ROWNUM := @ROWNUM + 1 AS TEMPRANK,
@INCRNUM := CASE
WHEN @ROWTOTAL = OBJ.YLCOUNT + 1 THEN @INCRNUM
WHEN @ROWTOTAL := OBJ.YLCOUNT + 1 THEN @ROWNUM
END AS FILERANK
FROM DOC_INFO DOCINFO, SYS_USERS U, SYS_ORGAN O, sys_stru
WHERE DOCINFO.VALID_FLAG = '1'
AND IFNULL(DOCINFO.DOWNLOAD_NUM, 0) != 0
AND U.USER_ID = DOCINFO.AUTHOR_ID
AND sys_stru.STRU_ID = U.DEPARTMENT_ID
AND O.ORGAN_ID = sys_stru.ORGAN_ID
GROUP BY DOCINFO.DOC_ID, U.USER_NAME
ORDER BY DOCINFO.DOWNLOAD_NUM DESC, DOCINFO.TITLE DESC
) OBJ, (SELECT @ROWNUM := 0, @ROWTOTAL := NULL, @INCRNUM := 0) R;
```
在 Oracle 中,变量需要在 SQL 语句外面进行声明和初始化。这里使用了 `@ROWNUM`、`@ROWTOTAL` 和 `@INCRNUM` 三个变量,它们都在 SQL 语句的最后一行进行了声明和初始化。
此外,由于 Oracle 对于 SQL 语句的执行顺序与 MySQL 略有不同,因此需要将临时变量的计算放在子查询中,并使用外层查询来获取这些变量的值。最终的结果集是从子查询中返回的。
相关推荐
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)