Tag: 无符号字符

为什么补充行为不同通过printf?

我正在阅读关于按位运算符的一章,我遇到了1的补码运算符程序,并决定在Visual C ++上运行它。 int main () { unsigned char c = 4, d; d = ~c; printf("%d\n", d); } 它给出了有效的输出: 251 然后,而不是使用d作为variables来保存〜c的值,我决定直接打印〜c的值。 int main () { unsigned char c=4; printf("%d\n", ~c); } 它给出-5的输出。 为什么它不工作?