Я дошел до того, что мне нужно сравнить опаленные и неподписанные значения. До сих пор я всегда модифицировал кодовую базу, чтобы полностью избежать этой ситуации, но теперь я не могу этого сделать.
Так как же правильно обрабатывать опаленные и неподписанные сравнения? Это смешанная кодовая база C/C++, поэтому мой вопрос относится к обоим языкам.
Я проверяю ресурс (signed )по запрошенному значению (unsigned ).
if (requested > resource.max) return Never;
if (requested > resource.free - resource.assigned) return NotNow;
return Now;
Я думал о чем-то вроде этого (замените варианты C++, где это применимо):
if (requested > (unsigned)INT_MAX) bail_out(); // assert,abort,throw,return....
if ((signed)requested > resource.max) return Never;
if ((signed)requested > resource.free - resource.assigned) return NotNow;
return Now;
Правильно ли я подхожу к этому, или есть лучший способ?