输出结果问题,请C语言高手赐教!

#include<stdio.h>main(){longy=23456;printf("y=%3x\n",y);printf("y=%8x\n",y);printf("y... #include <stdio.h>
main()
{
long y=23456;
printf("y=%3x\n",y);
printf("y=%8x\n",y);
printf("y=%#8x\n",y);
getch();
}
答案如下:
y=5ba0
y=_ _ _ _5ba0
y=_ _0x5ba0
("_"代表空格)
请解释为什么会出现这样的结果。
展开
 我来答
yixiaxi663
2011-09-01 · TA获得超过3.1万个赞
知道大有可为答主
回答量:2.5万
采纳率:0%
帮助的人:1.5亿
展开全部
1· 是说在执行getchar()这条语句的时候,在你没有按下回车键之前,无论你输入多少字符,程序只接受第一个输入的字符,其他输入的字符都被忽略了。
2·有符号的2进制数,最高位为1表明它是负数。你做右移操作,只能影响数值的大小,不能影响数值的正负性质。所以务必要保持最高位的符号位不能变。
3·\0是字符串的结束标记,不计入到字符串的长度中。
4·只要你理解了1问题里getchar()输入的特性,就知道在你摁下回车键之前,除了第一个字符有效,其他字符都是没有意义的。所以输入1234567890<CR>,程序接收收了1,ch = ‘1’;
5·if(a>b)a=b;b=c;c=a; 你要理解,他和if(a>b)是不一样的。你肯定是按照后面这样理解的。实际上if(a>b)a=b;b=c;c=a; 由if控制的只有a=b,其他的两条语句都不受if控制,无论if结果是什么,它们都会被执行。
6·正确答案应该是你说的那样。就是87和6543.000000
追问
你是在回答什么问题?
意法半导体(中国)投资有限公司
2023-06-12 广告
单片机,即单片微控制器,也称为单片微型计算机,是将中央处理器(CPU)、存储器(ROM,RAM)、输入/输出接口和其他功能部件集成在一块 在一个小块的集成电路上,从而实现对整个电路或系统的数字式控制。单片机不是完成某一个逻辑功能的芯片,而是... 点击进入详情页
本回答由意法半导体(中国)投资有限公司提供
skyscar1307
2011-09-01 · 超过15用户采纳过TA的回答
知道答主
回答量:99
采纳率:0%
帮助的人:56.2万
展开全部
这不就是printf的本职工作吗? 很奇怪吗? 你不知道printf就是用来干这个的?
%后面的数字是表示输出字符串的宽度,如果不足,就在前面添空格,
#后面有x的话会在字符串前加0x,表示十六进制
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
Tidus_forever
2011-09-01 · TA获得超过4401个赞
知道大有可为答主
回答量:2782
采纳率:100%
帮助的人:2000万
展开全部
%8x 代表输出八位 不足八位的,前面补空格
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
chenfengxizi
2011-09-02
知道答主
回答量:56
采纳率:0%
帮助的人:28.1万
展开全部
为什么输出的格式符是x?这样会把输出结果转换成16进制输出了 所以程序输出结果是没问题的
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式