8
我到达了需要比较有符号和无符号值的点。直到现在,我总是修改代码库以完全避免这种情况,但现在我无法做到这一点。正确处理有符号值和无符号值的比较
那么,处理单个和无符号比较的真正正确方法是什么?这是一个混合的C/C++代码库,所以我的问题适用于这两种语言。
我正在检查资源(签名)与请求值(无符号)。
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;
我是不是正确地处理这个,或者是有一些更好的办法?
为什么您的资源数首先签署? – 2012-07-31 08:23:30
'resource.free
2012-07-31 08:24:16
或者为什么要求未签名,因为这是OP似乎想要视为签名的值。无论如何,这种方法对我来说似乎很好。这种东西太单调乏味,我倾向于完全避免未签名的类型。 – jahhaj 2012-07-31 08:25:23