我對單個if語句的評估或條件存在基本疑問。假設l和r是指向樹節點的指針,在指針變爲null的情況下,檢查行是評估並返回false。我想知道的是,因爲l或r中的任何一個變爲null,在相同的if語句中,是否也會爲第三個條件引發空指針異常?如果我把第三個條件作爲第一個條件作爲第一個條件提出異常,那麼是否有人強調了在每種情況下對兩個語句(第二條語句作爲評論提及)是如何評估的?if語句中的多個條件或條件
bool isSymmetric(TreeNode* root) {
queue<TreeNode*>q;
if (root == NULL)
return true;
q.push(root->left);
q.push(root->right);
TreeNode *l, *r;
while (!q.empty())
{
l = q.front();
q.pop();
r = q.front();
q.pop();
if (l == NULL && r == NULL)
continue;
if (l == NULL || r == NULL || l->val != r->val) return false; //check
// if (l->val != r->val || l == NULL || r == NULL)
q.push(l->left);
q.push(r->right);
q.push(l->right);
q.push(r->left);
}
return true;
}
C++中沒有空指針異常。如果你解引用一個空指針,程序可以做任何事情。 – StoryTeller
解引用一個無效指針(比如一個空指針),那麼會導致[* undefined behavior *](http://en.cppreference.com/w/cpp/language/ub)。 –