Reputation: 1450
I think this is a simple question, but I'm struggling with the following. In my example I have the following statement (language is C):
int foobar
if (foobar)
{
// do something.
}
Now, if I am correct about this, this statement is true when foobar
is not zero. So it should be much the same as if (foobar!=0)
.
But what happens if foobar
becomes a negative number?
Upvotes: 42
Views: 118290
Reputation: 25705
negative or positive. Anything that's not a 0 is a true value in if
Also, Consider a negative number: -1
-1 in C internally is represented as: 0xFFFFFFFF
, in which case, it would be a positive number if I cast it to unsigned integer.
But after the advent of C99 standard compilers, I suggest you use
<stdbool.h>
instead. Makes the guessing work a lot less:
Upvotes: 68
Reputation: 649
Your statement should return true if foobar is a negative number (it's still different than zero) but you should avoid that sort of test as it's not the best practice to test variables that can have different 'true' values in that way.
Upvotes: 0
Reputation: 36082
same, the
if (foobar)
means foobar not zero so whether it is positive or negative doesn't matter, it is still not zero
Upvotes: 6