我目前正在学习如何编写C代码并偶然发现了一条有趣的行,
显然,
struct node{
node *next;
};
node *head = (node *)calloc(1, sizeOf(node));
head->next = NULL;
node *currentNode = head;
while (!currentNode)
在这种情况下,是
while(!currentNode)
与
不同while(currentNode != NULL)
?我认为他们的意思是检查相同的东西,当前的Node不是NULL但它们返回不同的结果而我不理解......
答案 0 :(得分:3)
while(currentNode)
和
while(currentNode != NULL)
是等价的。
第一个说虽然currentNode
有一些价值(可能是任何东西,甚至是垃圾),但第二个说虽然currentNode
不是NULL
,但是有一些价值。
另一方面,
while(!currentNode)
表示虽然currentNode
没有任何值,但是NULL
。