My understanding of this is as follows. In C, the `!` operator returns 0 if it is given a nonzero value and returns a nonzero value if it is given 0. 

Say you have this little snippet of C code:

```
int y = 0;
int z = !y;

```

What value will go into `z`? Does it simply take `!0` to be 1? Is it system dependent? Does the C standard dictate what is supposed to happen? I ran into these questions while doing some homework earlier tonight dealing with bitwise 2's-complement integer manipulation. I got a certain problem to work, but I'm sort of scratching my head as to *why* it works. Thanks a lot for any info!