Using Exclamation Marks '!' in C

Paul Filch picture Paul Filch · Apr 4, 2014 · Viewed 57.9k times · Source

I have come across a problem involving exclamation marks and integers whilst reading a code in my reference book.

Let us say I have declared an integer variable named number - int number = 0;

I then use a while function involving an exclamation mark and number

while(!number)
{
    ...
}

I am confused with this because I do not know what does !number mean and what would be possible returned results? I am not sure if this can be used, but as I said, I saw it in my book.

Therefore, it would be great if someone could tell me what does !number mean and what does it evaluate?

Thank you in advance.

Answer

gangadhars picture gangadhars · Apr 4, 2014

We can treat ! as not. So if a number is non-zero (either positive or negative) it returns Zero. If it is zero, it returns 1.

int i = 13;
printf("i = %d, !i = %d\n", i, !i);
printf("!0 = %d\n", !(0));