“&&”的含义是什么?当用C ++中的char上的char *操作时?

时间:2018-04-21 18:20:49

标签: c++

我遇到了一个从给定字符串中提取令牌(c字符串)的代码,但我对第5行感到困惑:tok && *tok。我只是无法弄清楚这个操作的结果。有人碰巧知道吗?

const char* getfield(char* line, int num)
{
    const char* tok;
    for (tok = strtok(line, ";");
            tok && *tok;
            tok = strtok(NULL, ";\n"))
    {
        if (!--num)
            return tok;
    }
    return NULL;
}

谢谢!

3 个答案:

答案 0 :(得分:5)

首先检查指针(tok)是否不是nullptr(指向无),如果指针不是nullptr,它会检查指针是否指向内存其中值(*tok)不是'\0'

答案 1 :(得分:3)

这是条件表达式,它检查tok不是nullptr*tok或字符不是“nul”字符'\0'

在C风格的for循环中,你有initalizer,condition和increment表达式。这里的条件是tok计算结果为真,然后*tok计算结果为真。

只有当tok不是nullptr且指向(*tok)的字符不是'\0'时,才会发生这种情况。

答案 2 :(得分:0)

&& amp;的含义保持原样。它仍然是一个逻辑运算符。该陈述相当于

(tok != nullptr) && (*tok != '\0');