Overflow에 관한 이슈들 issue

(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 댓글