如果/ else函数编译器优化

时间:2015-02-04 19:02:02

标签: c volatile

我有以下代码:

if (a > uplimit)
{
   a = a - uplimit;
   indicator = 2;
}
else if (a < lolimit)
{
   a = a - lolimit;
   indicator = 4;
}

当我编译并运行代码时,似乎代码永远不会转到指示符= 2或指示符= 4给定&gt; uplimit或&lt; lolimit。

但是,如果我在每个代码部分的开头添加一些东西,它就会起作用。

if (a > uplimit)
{
   c = 1;
   a = a - uplimit;
   indicator = 2;
}
else if (a < lolimit)
{
   c = 2;
   a = a - lolimit;
   indicator = 4;
}

似乎编译器正在尝试优化代码。我知道使用volatile可能会解决这个问题。有谁知道可以解决问题的其他方法?

顺便说一下,我正在使用Code Composer Studio。

0 个答案:

没有答案
相关问题