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