用vc++6.0编译的,问为什么第二个a的结果是1.7777777777,short不是只有2个字节吗?

#include<stdio.h>voidmain(){shorta=-1;unsignedshortb=65534;printf("%d,%o,%x,%u\n",a,a... #include <stdio.h>
void main()
{
short a=-1;
unsigned short b=65534;
printf("%d,%o,%x,%u\n",a,a,a,a);
printf("b=%d\n",b);
}
展开
 我来答
GTA小鸡
高粉答主

2017-11-02 · 醉心答题,欢迎关注
知道大有可为答主
回答量:2.6万
采纳率:78%
帮助的人:1.3亿
展开全部
short型不论是%d还是%o还是%x还是%u格式输出都不可能出现小数,这和几个字节无关。
更多追问追答
追问
问错了,结果是37777777777
追答
因为实际传入的类型是int型而不是short型。printf函数在参数压栈时,会自动将char、short类型全部提升到int型后再压栈,因此此时压入栈中的是int型的-1而不是short型的-1。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式