I believe that the answers are incorrect. They assume that all true boolean expressions evaluate to 1, whereas the c standard only guarantees that they don't evaluate to 0.
Edit: As pointed out by the responses, I am wrong
Edit: As pointed out by the responses, I am wrong
"When any scalar value is converted to _Bool, the result is 0 if the value compares equal to 0; otherwise, the result is 1"
http://www.open-std.org/jtc1/sc22/wg14/www/docs/n1256.pdf page 43
Why do people who haven't checked the C standard make such claims? My C lecturer made exactly the same mistake.
Unfortunately this does not educate people to that kind of issues, which is very unfortunate.