奇怪了,signed无法转换成unsigned?

cg5353 2006-02-23 06:48:55
#include <stdio.h>

int main()
{
int x = -1;
printf("%d\n", (unsigned) x);
system( "pause" );
return 0;
}

这个为什么会输出-1?

winXP+Dev-c++,建立的是.c文件
...全文
73 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
寻开心 2006-02-23
  • 打赏
  • 举报
回复
pritnf是按照%后面的类型来解释你传递进来的数据的

给传递进来的数据做类型转换,只是把数据生成了一个中间变量,然后把中间变量的地址告诉了函数,函数按照%当中定义的类型来输出它

因此虽然你把x转换成了unsigned的一个中间变量,但是中间变量确是按照signed方式输出的,所以结果是一样的————依然是有符号的
寻开心 2006-02-23
  • 打赏
  • 举报
回复
printf("%u\n", x); 即可

打印的时候,输出的类型是在^%后面指定的

69,371

社区成员

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

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