(c언어를 예롤 들겠다.)
(어미에 _UB는 unsigned char,즉 uint8_t 를 말함)
uint8_t var01_UB;
...
var01_UB ++;
if(var01_UB >= 1)
{
....
...
위와 같은 예제가 있다.
if의 컨디션에 대하여 false를 만족할수 없다고 생각 MC/DC를 커버할수 없다고 생각하였는데
아니였다 .....
코드가 잘못되고 잘되고를 떠나서
MC/DC를 만족할수 있다.
var01_UB = 255;
이렇게 해주면
++증가 연산에 의해
255++ -> 0
이렇게 되므로
if의 컨디션에 대한 false가 성립될수 있다.
결론 : ++연산자는 (+연산자도 마찬가지) overflow와 항상 같이 생각하자 무조건 +=overflow 이렇게
나! = 한쪽끝 (위의경우 min일때만) 생각하고 다른쪽끝(위의경우 overflow발생하는 max 부분)을 생각하지 못한것은 수학전공자로.. 창피하다 ㅡㅡ;
0 댓글