I was just writing code in C and it turns out it doesn't have a boolean/bool datatype. Is there any C library which I can include to give me the ability to return a boolean/bool datatype?
If you have a compiler that supports C99 you can
#include <stdbool.h>
Otherwise, you can define your own if you'd like. Depending on how you want to use it (and whether you want to be able to compile your code as C++), your implementation could be as simple as:
#define bool int
#define true 1
#define false 0
In my opinion, though, you may as well just use int
and use zero to mean false and nonzero to mean true. That's how it's usually done in C.
true
and false
are both macros that are replaced by 1
and 0
, respectively, and bool
is a macro that expands to the boolean type, _Bool
. –
Bandy bool
, true
, and false
, then make your return type bool
and return false
. Otherwise, just make your return type int
and return 0
. It's up to you waht you want to do. I just think the non-macro approach is better. –
Bandy C99 has a boolean datatype, actually, but if you must use older versions, just define a type:
typedef enum {false=0, true=1} bool;
bool
pre-C99 is dangerous because the semantics differ. (bool)2
yields 2, not 1. A more realistic example: 1U<<(bool)isdigit(c)
will give the wrong result on most implementations. –
Aalst C99 has a bool
type. To use it,
#include <stdbool.h>
As an alternative to James McNellis answer, I always try to use enumeration for the bool type instead of macros: typedef enum bool {false=0; true=1;} bool;
. It is safer b/c it lets the compiler do type checking and eliminates macro expansion races
bool b = 1;
–
Bandy #define bool int
. –
Bandy float f; f = true;
should raise a warning for the implicit (and supposedly incompatible) type cast. –
Coven C99 introduced _Bool
as intrinsic pure boolean type. No #include
s needed:
int main(void)
{
_Bool b = 1;
b = 0;
}
On a true C99 (or higher) compliant C compiler the above code should compile perfectly fine.
We can use enum type for this.We don't require a library. For example
enum {false,true};
the value for false
will be 0 and the value for true
will be 1.
struct Bool {
int true;
int false;
}
int main() {
/* bool is a variable of data type – bool*/
struct Bool bool;
/*below I’m accessing struct members through variable –bool*/
bool = {1,0};
print("Student Name is: %s", bool.true);
return 0;
}
© 2022 - 2024 — McMap. All rights reserved.