Я всегда использую unsigned int для значений, которые никогда не должны быть отрицательными. Но сегодня я заметила эту ситуацию в моем коде:
void CreateRequestHeader( unsigned bitsAvailable, unsigned mandatoryDataSize,
unsigned optionalDataSize )
{
If ( bitsAvailable – mandatoryDataSize >= optionalDataSize ) {
// Optional data fits, so add it to the header.
}
// BUG! The above includes the optional part even if
// mandatoryDataSize > bitsAvailable.
}
Должен ли я использовать int вместо unsigned int для чисел, даже если они не может быть отрицательным?