Question: can every if...then...else statement be converted into an equivalent statement using only ?:

Answer: 
The code:

```
if ( flag ) {
   exit(1);
}
else {
   return 0;
}

```

cannot be converted into:

```
flag ? exit(1) : return 0;

```

**A better example** - this would be inside a loop:

```
if ( flag ) {
   continue;
}
else {
   break;
}

```

cannot be converted to:

```
flag ? continue : break;

```
No.

Both "branches" of the conditional expression must evaluate to the same type, and that type must not be `void`.

For example, you could do this:

```
x > 0 ? printf("Positive!\n") : 0;

```

because `printf` return `int`. (I would only use this in a round of code golf, though; in fact, [I just did](https://stackoverflow.com/questions/2568090/code-golf-word-search-solver/2568590#2568590).)

But you cannot do this:

```
x > 0 ? exit() : 0;

```

because `exit` returns `void` (or, actually, doesn't return at all).