Common knowledge

C++ warning C4018 해결

vencedor 2016. 7. 26. 10:44
warning C4018: '>=' : signed 또는 unsigned가 일치하지 않습니다.

MSDN에서 설명하기를
대략 부호 있는 숫자와 부호 없는 숫자를 비교하려면 부호 있는 값을 부호 없는 값으로 변환해야 한다고한다.

즉, 두형식 중 하나를 캐스팅해서 해결이 가능하다고 한다.



1. warning C4018 발생코드

sInt adjust = newVA - oldVA;

if(adjust < 0)
{

newVA = oldVA;

if(newSize >= -adjust)

newSize += adjust;

}


2. 수정코드


int newSize2 = 0; //added
sInt adjust = newVA - oldVA;

if(adjust < 0)
{

newVA = oldVA;

newSize2 = newSize; //added

if(newSize2 >= -adjust) //modified

newSize += adjust;

}