Почему вложенный оператор if выдает true, если нет условий? - PullRequest
0 голосов
/ 14 июня 2019

Я борюсь с вложенным оператором "if". Я не знаю, почему он отображает true, когда нет условий, а когда я изменяю возвращаемое значение, он отображает false. Кроме того, почему нет разницы, когда я меняю тип примитива функции с int на char?

#include <stdio.h>
#include <strings.h>

int random(char z[]);

int main() {

    char *x ="Tup";
    char *y ="Nope";
    printf("%s\n", x);
    printf("%d\n", random("Hi"));


    if(random("random char")){
        if(x){
            printf("True");
        }
    }else if(y){
        printf("False");
    }


    return 0;
}
int random(char z[])
{
    char a[3] ="yak";

    return a[0] == 'y';
}

1 Ответ

3 голосов
/ 14 июня 2019

Функция random возвращает результат условия a[0] == 'y'.Поскольку вы определяете a как char a[3] ="yak", это всегда верно.

Из-за этого условие if (random("random char")) выполняется, поэтому вводится раздел if.Затем if(x) оценивается.x указывает на строковую константу "Tup", что означает, что она имеет ненулевое значение, что делает условие истинным.Таким образом, "True" затем печатается.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...