Bart Teunissen
Bart Teunissen

Reputation: 1450

if statement integer

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

Answers (3)

Aniket Inge
Aniket Inge

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:

Read here about stdbool.h

Upvotes: 68

Lupuss
Lupuss

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

AndersK
AndersK

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

Related Questions