Question: > 
> **Possible Duplicate:**  
> 
> [Negative ASCII value](https://stackoverflow.com/questions/4690415/negative-ascii-value) 
> 
> 
> 

```
int main() {
    char b = 8-'3';
    printf("%c\n",b);

    return 0;
}

```

I run this program and I get a sign which looks like a question mark (?).

My question to you is why is it prints that and not printing nothing, beacause as far as I know the value of b by the ASCII table is minus 43 which is not exist.

by the way, when I compile this code: 

```
int main() {
    char b = -16;
    printf("%c\n",b);

    return 0; 
}

```

I get nothing.

Answer: 
That's because `-16` is the same as hex `0xf0` which is the same as `240`. In my character set (ISO 8859-1) that character is `LATIN SMALL LETTER ETH` or `'ð'`.
characters are internally interpreted as "unsigned" while printing. Hence, it will be 255 - 16 = 239th character. The ascii value with the order 239 is printed on the screen console. Similarly -43 is order 212.