我在做leetcode问题https://leetcode.com/problems/add-two-numbers/
ListNode的定义是:
// Definition for singly-linked list.
struct ListNode {
int val;
ListNode *next;
ListNode(int x) : val(x), next(NULL) {}
};
当我检查列表是否结束时,我使用了:
int v1 = h1 == NULL? h1->val:0; // h1 is defined before: ListNode* h1 = l1;
但它返回运行时错误,但是如果我将其更改为
int v1 = h1? h1->val:0;
它被接受了。
为什么?
答案 0 :(得分:10)
这行代码:
int v1 = h1 == NULL ? h1->val : 0;
或多或少与...相同:
int v1 = 0;
if (h1 == NULL)
v1 = h1->val;
请注意,如果h1 == NULL
,则在以下行中取消引用h1
时,您将展示未定义的行为。
答案 1 :(得分:1)
你需要!=而不是==因为Null往往是零或假