在避免雜散指針的情況下,這兩個條件如何評估?如果條件涉及AND避免雜散指針
if (vShop[0].vItem[vShop[0].itsActiveItem]!=NULL && vShop[0].vItem[vShop[0].itsActiveItem]->itsQuantity>0) DoPurchase();
其中vShop [0]是對象的向量,vItem是向對象的指針向量。
我想確保之前指針不計算NULL 它進一步檢查vShop [0] .vItem [vShop [0] .itsActiveItem] - > itsQuantity> 0。
或者我應該有單獨做到這一點,那就是:
if (vShop[0].vItem[vShop[0].itsActiveItem]!=NULL) if (vShop[0].vItem[vShop[0].itsActiveItem]->itsQuantity>0) DoPurchase();
換句話說做的第一案是一個連續的檢查,如果第一個條件計算,第二個條件是自動刪除?非常感謝。
使用'if(ptr!= NULL && ptr-> something == x)'是完全可以接受的。如果它變成一長串這樣的表達式,我寧願將它分解成單獨的行,但是。 –
如果你想獲得更多的信息,它叫做短路。同樣,如果(x || y)'如果'x'爲真則不評估'y'。 – clcto
這不僅僅是可以接受的,它是確保測試不通過空指針的標準習慣用法。如果表情變得太長,這可能是德米特法則被打破的標誌。 –