繁体   English   中英

为什么 if 条件总是为真?

[英]why the if condition is always true?

嗨,我不明白为什么这个 if 条件不需要任何“条件”并且总是正确的。

  #include <string.h>
    #include <stdio.h>

    int main() {
        char text[] = "I learn C programming because it’s fun";
        char *ptr, c = 'u';
        ptr = strrchr(text, c);

        if (ptr)
        {
            printf("The position of ’%c’ is: %d\n", c, ptr-text);
        }

        printf("The character was not found\n");
        return 0;
    }

为什么 if 条件总是为真?

因为'u'在字符串中。

尝试

ptr = strrchr(text, 'q');

看看会发生什么。

strrchr返回指向所搜索strrchr的指针,或者在找不到strrchr返回NULL

至于:

...为什么这个 if 条件不需要任何“条件”

在 C 中,任何可以转换为整数值的东西都可以用作条件。 例子:

int x = 42;
if (x)
{
    // do something
}

这里x是一个条件。 这和说的一样

int x = 42;
if (x != 0)
{
    // do something
}

任何非“零”的东西在 C 中都被认为是 TRUE。

这也适用于指针:

int* p = NULL;
p = whatever...;
if (p)
{
    // do something isn't NULL
}
else
{
    // p is NULL so do something else
}

也可以写成:

int* p = NULL;
p = whatever...;
if (p != NULL)   
{
    // do something isn't NULL
}
else
{
    // p is NULL so do something else
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM