【发布时间】:2013-11-14 16:11:25
【问题描述】:
这是一个代码sn-p:
unsigned short a=-1;
unsigned char b=-1;
char c=-1;
unsigned int x=-1;
printf("%d %d %d %d",a,b,c,x);
为什么输出是这样的:
65535 255 -1 -1
?
有人可以分析一下吗?
【问题讨论】:
-
你期望的输出是什么?
-
你的编译器应该警告你
%d。%d需要int类型,但并非所有参数都是 int 类型。因此,编译器将在打印之前执行隐式转换为 int -
c=255 或 x=very large no,但不是两者都 -1 -1
-
@user2976610 printf with %d as format 转换为 int。一个 int 已签名。因此 c 为 -1,x 为 -1。检查大流士的答案
-
如果是这样,那么 a 和 b 也可能被转换为 int..right
标签: c printf output unsigned signed