请教一个c++的小问题

lwbhero 2002-08-20 12:06:48
小弟我刚刚学习c++,遇到一个小问题,请各位高手不吝赐教。
设有如下语句:
char unsigned i=45;
为何cout<<~i<<endl;时是-46,而不是按位取反呢?
...全文
21 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
alanwang_ 2002-08-20
  • 打赏
  • 举报
回复
-46是45按位取反的结果,你用%X打印就能看出来了
kingofark 2002-08-20
  • 打赏
  • 举报
回复
#include <iostream>
#include <cstdio>

using namespace std;

int main()
{
char unsigned i = 45;
printf("i = %0x\n", i);
cout << i << endl;
cout << (char unsigned)i << endl;
printf("~i = %0x\n", ~i);
cout << ~i << endl;
cout << (char unsigned)~i << endl;
return 0;
}
garfield_82 2002-08-20
  • 打赏
  • 举报
回复
你把45转化为二进制,然后按位取反,再看看
mydadou 2002-08-20
  • 打赏
  • 举报
回复
可能使COUT对UNSIGN INT的重载的问题,先把UNSIGNINT 转为INT

69,368

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧