c语言如何给布尔变量赋值为true

How to assign true to a boolean variable in c language

如果整数变量year是闰年,我想给布尔变量leapYear赋值为true(闰年是4的倍数,如果是100的倍数,也必须是400.)在c程序中

这是我试过的代码。

bool leapYear;
int year;

printf("Enter a year ");
scanf("%d", &year);
if (year %4 = 0 || year %100 = 0 || year %400 = 0)
    printf("true");

我试图编译我写的代码,但它给出了一个错误,提示未知类型名称 'bool'。

您需要 #include <stdbool.h> 才能使用布尔值,但在 C 语言中我们通常使用整数。它的工作方式是 0 为假,其他为真。

在你的情况下,

int leapYear = 0;    // default to false
... 
leapYear = 1;    // set to true. Any non-zero value works.

您必须包含 header 文件 <stdbool.h>

在这个文件中 bool 被定义为宏并扩展为 C 标准无符号整数类型 _Bool

任何不等于 0 的值都将转换为 1 并分配给 _Bool.

类型的变量

例如,要将一个变量设置为 true 你可以只写

bool leapYear = 1;

header 文件还包含 truefalse 的宏。

这是一个演示程序

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

int main(void) 
{
    bool leapYear = true;

    printf( "leapYear = %u\n", leapYear );

    return 0;
}

它的输出是

leapYear = 1

如果你不想包含 header 那么你可以只使用标准整数类型 _Bool.

例如

#include <stdio.h>

int main(void) 
{
    _Bool leapYear = 1;

    printf( "leapYear = %u\n", leapYear );

    return 0;
}

甚至 int 类型

int leapYear = 1;

在 C 逻辑运算中 return 如果表达式为真则为整数 1,否则为 0。

正如大家所指出的,您的主要问题是未能 #include <stdbool.h>。此外,您在条件语句中使用 = 而不是 ==。我个人不会尝试使用单个条件,因为闰年​​的规则很复杂并且很难转化为单个语句。为了清楚起见,我会使用一个函数:

#include <stdbool.h>

bool is_leap(int year) {
    if (0 == (year % 400)) return true;
    if (0 == (year % 100) && year > 1582) return false;
    if (0 == (year % 4)) return true;
    return false;
}

int main(int argc, char *argv[]) {
    . . .
    bool leap = is_leap(2019);
    . . .
}