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

如何在c语言中为布尔变量赋值为true,c,boolean,boolean-expression,C,Boolean,Boolean Expression,在c程序中,如果整型变量year是闰年(闰年是4的倍数,如果是100的倍数,它也必须是400的倍数),我想将布尔变量leapYear赋值为true 这是我试过的代码 bool leapYear; int year; printf("Enter a year "); scanf("%d", &year); if (year %4 = 0 || year %100 = 0 || year %400 = 0) printf("true"); 我试图编译我编写的代码,但它给出了一个错

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

这是我试过的代码

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
才能使用boolean,但在C中,我们通常使用整数。它的工作方式是0是假的,其他的都是真的

就你而言

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

您必须包含头文件

在此文件中,
bool
被定义为宏,并扩展为C标准无符号整数类型
\u bool

任何不等于
0
的值都将转换为
1
,并分配给类型为_Bool的变量

例如,要将变量设置为true,您只需编写

bool leapYear = 1;
头文件还包含
true
false
的宏

这是一个演示程序

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

int main(void) 
{
    bool leapYear = true;

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

    return 0;
}
如果不想包含标题,则可以使用标准整数类型
\u Bool

比如说

#include <stdio.h>

int main(void) 
{
    _Bool leapYear = 1;

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

    return 0;
}

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

正如大家所指出的,您的主要问题是未能包含。另外,在条件语句中使用
=
而不是
=
。一、 就个人而言,我不会尝试使用单个条件,因为闰年的规则很复杂,很难翻译成单个语句。为了清晰起见,我会使用一个函数:

#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);
    . . .
}
#包括
布尔是一个闰年(整数年){
如果(0==(年份%400))返回true;
如果(0==(年份%100)&年份>1582)返回false;
如果(0==(第%4年))返回true;
返回false;
}
int main(int argc,char*argv[]){
. . .
bool-leap=is_-leap(2019年);
. . .
}

没有回答这个问题:你所有的
=
都应该是
=
\include
另外,你的闰年逻辑是错误的,它对4的所有倍数都返回true,它不能正确地执行世纪异常。即使您使用
\u Bool b=true,也请参见使用
您仍然需要
#包括
,才能接受
true
bool
是一种标准类型,因为C99@EugeneSh. 对不起,用错了术语。我的意思是默认情况下不包含它,您必须自己包含它。
\u Bool
是一种标准类型,不包含任何标题。所以,是的,布尔值是“默认包含的”。它们必须是,因为
\u Bool
有特殊的规则,不适用于任何其他类型
bool
只是stdbool.h.为方便起见提供的
\u bool
的别名。据我所知,使用
\u bool
被认为是不好的做法,不管你从哪里得到这个想法,@ZacharyOldham。如果有什么不同的话,我倾向于换一种说法——在C中使用
bool
,可能会有问题,因为它有可能与为该符号提供自己定义的代码发生冲突,而且这种代码并不特别少见。但这完全离题了<代码>\u Bools是布尔值。stdbool.h的
bool
是相同的类型,但是您不需要在标题中包含布尔值。(并且
\u Bool
是一个整数。)关闭1。1700年通常被认为是非闰年。建议
0==(年份%100)&&year>=1700
0==(年份%100)&&year>1582
int leapYear = 1;
#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);
    . . .
}