关于~0U 和~0,为什么我输出的都是-1?

从岳麓山到珞珈山 2019-03-18 09:51:22
我知道有符号数会采用补码,使得~0的值为-1;但是我已经在后面加了个U,为什么输出的还是-1;
下面的代码中我特意使用了int, unsigned int加以区分,还在后面补了U但是最后都是-1;

#include <stdio.h>

int main(void)
{
int a;
unsigned int b;

a = ~0;
b = ~0;

printf("a: %d\n", a);
printf("b: %d\n", b);
printf("%d\n", ~0U);
printf("%d", ~0);
}


...全文
768 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
谢谢!!我后来查了下%d,会强制把开头变为符号位,应该用%u.
蓝白云 2019-03-18
  • 打赏
  • 举报
回复
因为你使用的是“%d”输出

69,382

社区成员

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

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