怎么样 !与!=

时间:2017-07-25 18:22:21

标签: c++11 operators

我正在编写的功能目标是以两对打印列表,例如:

  

列表:1 2 3 4 5 6

     

对名单:2 1 4 3 6 5

我写了以下代码:

printPair(){
    bool flag = 1;
    node *temp = new node();
    node *temp2 = new node();
    temp2 = NULL;

    if(!head)
    {
        printf("Empty List!!");
        return 0;
    }
    temp = head;

    while(!temp && !temp->next)  //Error here 1.
    {
        if(!temp2)  //Error here 2.
            temp2->next->next = temp->next;
        temp2 = temp->next;
        temp->next = temp->next->next;
        temp2->next = temp;
        if(flag)
        {
            head = temp2;
            flag = 0;
        }
        temp = temp->next;
    }
}

如果替换为:

,它可以正常工作
1. `while(temp !=NULL && temp->next !=NULL)`
2. `if(temp2 != NULL)`

那么!!=有什么不同?

1 个答案:

答案 0 :(得分:0)

当temp的布尔值为false时,

while(!temp){}将执行。

如果temp具有除null之外的任何值,则

while(temp != null)将执行 (如果temp为真,它也会通过)

你想使用while(temp!= null),因为你遵循 - >下一次引用,直到你到达列表中的最后一项(temp-> next next wherehere)