【发布时间】:2018-11-10 04:32:38
【问题描述】:
我有一个名为 end_jump 的全局变量,它是 3 或 7。
根据值是什么,我想结束一个 for 循环(优化)。
我当前的代码是:
int i;
for(i = 0; i < ((end_jump % 3) == 0) ? 4 : 10; i++){
/* do something with */ array[i];
}
我没有收到任何错误消息,for 循环继续,但没有停止。不是 4 点,也不是 10 点。
有什么问题?
【问题讨论】:
-
en.cppreference.com/w/c/language/operator_precedence ;
?:优先级很低。可能需要更多的括号。 -
试试:
((end_jump % 3) == 0) ? 4 : 10==>(((end_jump % 3) == 0) ? 4 : 10) -
@JBakalapati:不要添加“谢谢”和类似的帖子 - 这些应该编辑掉,而不是添加。 meta.stackexchange.com/questions/2950/…
-
最好的做法是让 for 循环尽可能简单。这包括没有在循环体中发生变化的可变循环条件。
标签: c linux ternary-operator operator-precedence