Я запутался в CC оператора switch
Если у меня есть следующий код:
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");
}
что такое ЦК?
Я нашел сообщение, в котором говорилось, что это 5, с этой диаграммой
(краев 17, а не 16, думаю опечатка)
В нем говорится, что нам нужно только считать случай 0 и случай 1 как один
Но я думаю, что диаграмма должна быть:
Ребра: 17,
Узлы: 13,
17 - 13 + 2П = 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
я прав..?
действительно, действительно, очень запутался...