请教一下C语言中按位取反~的使用

2025-02-11 13:57:51
推荐回答(5个)
回答1:

short、char在算术运算时,如果int可以容纳原来的范围,则首先提升为int,否则提升为unsigned int.
也就是说,你这题跟i的类型是不是int没关系,只要执行~运算,char型的就会首先提升成int。
用以下代码可以证明
char a = 1;
printf("%d\n", sizeof(~a));

所以i = 0xFF ~j=0xFFFFFFFF 就不相等了

回答2:

错误 i = 0xFF ~j=0xFFFFFFFF 所以不相等

定义 改成char i = 0, j = 0; 则输出正确

回答3:

错误

i=255
j=0
~j=-1

回答4:

i = 0xFF;
j = 0x00;

~j返回0xffffffff

所以i==~j是不成立的

回答5:

既然是无符号的字符类型,这个应该是printf 正确