【问题标题】:Calculate the number of all possible execution paths in a C function计算 C 函数中所有可能执行路径的数量
【发布时间】:2015-02-04 18:53:19
【问题描述】:

我正在拼命寻找一种方法来轻松计算 C 函数中所有可能的执行路径的数量。

例如,对于以下函数,我希望得到 3 的结果(如果有机会基于 'i' 进入任何 'if' 语句的值)

void test(void)
{
   if (i>0)
     x = x + 1;
   else if (i>10)
     x = x + 2;
   else
     x = x + 3;
}

【问题讨论】:

  • McCabes 工具集可能正是您想要的。

标签: c metric


【解决方案1】:

使用逗号作为

int test(void)
{
   int ways = 0;
   if (++ways, i>0)
     x = x + 1;
   else if (++ways, i>10)
     x = x + 2;
   else
   {
     x = x + 3;
     ++ways;
   }
   return ways;
}

【讨论】:

  • 我在你的方法中看到的一个问题是,如果我们有嵌套的条件语句,它就不起作用。例如,如果我们在第一个 if 中添加另一个 if 语句,它会给出 2 而不是正确的 4。
  • @limp;您需要在每个条件表达式中输入++ways
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-04-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多