我想知道 ~ 操作数对 char 做了什么。示例代码:如果 var="a",则输出为 -1。
int ret (char var)
{
int x;
x=var|~var;
return x;
}
int main()
{
printf("%d",ret("a"));
return 0;
}
我不明白为什么它返回-1
首先"a"
和'a'
不同。"a"
传递字符串数组的地址"a"
并'a'
传递 char a
。所以你需要修改代码为
printf("%d",ret('a'));
一旦修改,var
is 97
which is0x00000061
和~var
is -98
which is 0xffffff9e
。
0x00000061
| 0xffffff9e
将是二进制补码的0xffffffff
“-1” 。
如果需要0xffffffff
,请%x
改用 as
printf("0x%x",ret('a'));
~
操作员是negation
具有身份的操作员-x-1
。有逻辑(按位)否定和算术否定。C 用~
. x=5
以二进制为例:
x = 5
该~
操作将产生以下效果:
~x = -5-1 = -6
在您的情况下'a'
是97
or 01100001
,因此
~a = -97-1 (or -98)
对困惑感到抱歉