Инициализирующая структура в c - PullRequest
0 голосов
/ 24 апреля 2020

В C мы не можем присвоить int variable = true;, где, как показано ниже, выполняется код.

typedef struct mystruct {
    int variable;
} mystruct_;

int main(void){
    // Your code here!
    mystruct_ st = {true};
    printf("%i",st.variable);
}

Почему значение true не является допустимым значением для int variable = true, но действительно для члена int в структуре? Может кто-нибудь объяснить, почему?

1 Ответ

3 голосов
/ 24 апреля 2020

В C мы не можем присвоить int variable = true;

Это неверно. Он компилируется и запускается успешно. Следующий код компилируется и отлично работает на G CC.

#include <stdio.h>
#include <stdbool.h>

typedef struct mystruct {
    int variable;
} mystruct_;

int main(void){
    int variable = true;
    mystruct_ st = {true};
    printf("%i %i",st.variable, variable);
}

Кстати, stdbool.h содержит следующее:

#define true 1
#define false 0

Вот почему он должен работать с int.

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