新手求教

weixin_56991544 2021-04-07 04:44:51
#include <stdio.h>

int main()
{
unsigned char i;
i=5;
printf("%d\n",~i);

return 0;
}
————————————————

#include <stdio.h>

int main()
{
unsigned char i;
i=5;
i=~i;
printf("%d\n",i);

return 0;
}


上下两个输出的结果为什么会不一样?
...全文
162 4 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
源代码大师 2021-05-03
  • 打赏
  • 举报
回复
C和C++完整教程:https://blog.csdn.net/it_xiangqiang/category_10581430.html C和C++算法完整教程:https://blog.csdn.net/it_xiangqiang/category_10768339.html
自信男孩 2021-04-08
  • 打赏
  • 举报
回复
引用 2 楼 weixin_56991544 的回复:
也就是中间值的时候都是用的int的类型?

有一个类型隐式提升,可以查一下~
比如~i会自动将i的类型提升到int类型~
weixin_56991544 2021-04-08
  • 打赏
  • 举报
回复
也就是中间值的时候都是用的int的类型?
自信男孩 2021-04-07
  • 打赏
  • 举报
回复
这中间都掺杂着类型转换,比如i = ~i;首先~i取反会类型提升到int,所以~i的结果是-251(最高位为符号位int类型);
i = ~i;把-251赋值给i会有类型int转成unsigned char(最终转成unsigned char)。

70,020

社区成员

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

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