【发布时间】:2015-05-14 14:43:12
【问题描述】:
我对 switch 语句的 CC 感到困惑
如果我有以下代码:
if (n >= 0) {
switch(n) {
case 0:
case 1:
printf("zero or one\n");
break;
case 2:
printf("two\n");
break;
case 3:
case 4:
printf("three or four\n");
break;
}
}
else {
printf ("negative\n");
}
什么是 CC?
我发现a post说是5,有这个图
(边是17,不是16,我认为是错字)
它说我们只需要将case 0和case 1算作一个
但我认为图表应该是:
边数:17,
节点数:13,
17 - 13 + 2P = 6
我把每个案例都算作 1 个
我的 OOSE 教授说是 6,但方式不同
他说:
init => 1
if => 1
switch => 1
case 0 1 => 1
case 2 => 1
case 3 4 => 1
所以应该是 6
正确答案是什么?
我真的很困惑,谢谢。
已编辑:
现在我认为它是 7。是的,7
因为如果 n 大于 5,则什么都不做,退出 switch 语句。
然后我们得到这个图表:
现在 E = 18
18 - 13 + 2 = 7
我说的对吗?
真的,真的,真的很困惑……
【问题讨论】: