3 ms·
> Under the assumption that there are no boolean types from earlier, this is not true Can you elaborate on this one? I thought && and || expressions always eva
by ramshorns 6y ago
> Under the assumption that there are no boolean types from earlier, this is not true
Can you elaborate on this one? I thought && and || expressions always evaluated to 0 or 1.
- saagarjha 6y agoNow that I think about it, I think that depends on what you mean by "use". I was commenting from a perspective that you can pass in something that is not 0 or 1, and in general it is not advised to assume that a "boolean" is 0 or 1 especially given that this document doesn't mention the boolean type (which is guaranteed to have those values). This is true even under ANSI C, because as it mentions later, programmers depend on any nonzero value being "truthy".
- _kst_ 6y agoC99 added type _Bool (also called bool if you #include <stdbool.h>) -- but it doesn't actually use it much. Operators that yield logically "boolean" values (<, <=, >, >=, ==, !=, &&, ||, !) yield values of type int, not _Bool. The value is always 0 or 1 -- in contrast with isdigit(), for example, which is specified to return 0 for false and some unspecified non-zero value for true. Converting any scalar value (that includes pointers) to _Bool yields 0 or 1 (false or true).