See, following code
if (a = 5 > 4)
;
we know 5 > 4 is True, but True's value is What? Is that 1 ?
Printable View
See, following code
if (a = 5 > 4)
;
we know 5 > 4 is True, but True's value is What? Is that 1 ?
Can't you simply print out the result?
Code:printf("5 > 4 = %d\n",5 > 4 );
To be fair to the OP, he cannot rely on his compiler's output in this case to know what (if anything) is guaranteed by the standard.
After all:
When run on OpenBSD, this prints out 1. Therefore the is* functions return 1 for true, right? Well no, because when I run this on Linux/glibc, I get 256.Code:#include <stdio.h>
#include <ctype.h>
int main(void)
{
printf("%d\n", isupper('A'));
}
It's true that the relational operators all return 1 for true, but testing on one compiler (or multiple compilers, for that matter) cannot prove that.
http://publib.boulder.ibm.com/infoce...e/ref/rele.htmQuote:
C : The type of the result is int and has the values 1 if the specified relationship is true, and 0 if false. C++: The type of the result is bool and has the values true or false.
isspace() and so on are different story. Read the doc.
MOREQuote:
The values returned are non-zero if the character c falls into the
tested class, and a zero value if not.
zero is false, non zero is true<->false is zero, true is any value except zero
You sould never rely on non zero value returned from a logical comparison as it can be any value.
0 is false, anything but 0 is true. True and false in stdbool.h evaluates to 1 and 0 BTW.
Of corse, but I want a more detailed explanation.
I know !0 is equivalent True, 0 is False. !0 is what value in relational operators
compared, which is confuse me indeed
hehe,
The point is it can be any non-zero value, doesn't matter.
Well, it is guaranteed that the result of !0 is 1, and that the result of !x, where x is non-zero, is 0. But this is a property of the operator!. If I remember correctly this property applies to the relational operators as well, but I do not have a copy of the C standard with me right now to check. That said, it is true that most of the time you should not be relying on this, but more on a general notion of non-zero as true and zero as false.