计算C函数中所有可能执行路径的数目
我正在拼命寻找一种方法来轻松计算C函数中所有可能执行路径的数量 例如,对于下面的函数,我希望得到3的结果(如果基于'I'得到的值有机会输入任何'if'语句)计算C函数中所有可能执行路径的数目,c,metric,C,Metric,我正在拼命寻找一种方法来轻松计算C函数中所有可能执行路径的数量 例如,对于下面的函数,我希望得到3的结果(如果基于'I'得到的值有机会输入任何'if'语句) 使用逗号运算符作为 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;
使用逗号运算符作为
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;
}
McCabes工具集可能正是您想要的。我看到您的方法的一个问题是,如果我们有嵌套的条件语句,它就不起作用。例如,如果我们在第一个if中放入另一个if语句,它将给出一个结果2,而不是正确的4。@limp;您需要在每个条件表达式中放入
++ways
。
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;
}