如何在c语言中为布尔变量赋值为true
在c程序中,如果整型变量year是闰年(闰年是4的倍数,如果是100的倍数,它也必须是400的倍数),我想将布尔变量leapYear赋值为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"); 我试图编译我编写的代码,但它给出了一个错
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);
. . .
}