c语言按位取反这样输出怎么不对啊,求指教!

#include <stdio.h>int main(void){ unsigned char ch = 2; printf("%d尀n", ~ch); return 0;}
2025-03-10 10:24:02
推荐回答(2个)
回答1:

ch是2,~ch取反为11111101复制给一个有符号的临时变量,%d对应参数会自动转换成int,所以这个有符号的11111101自动转换成111111111(30个1)01,这个临时变量就是-3

回答2:

实际输出结果是什么?你理解的输出结果应该是什么?