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 文件还包含 true
和 false
的宏。
这是一个演示程序
#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);
. . .
}
如果整数变量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 文件还包含 true
和 false
的宏。
这是一个演示程序
#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);
. . .
}