
输出结果问题,请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
("_"代表空格)
请解释为什么会出现这样的结果。 展开
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
("_"代表空格)
请解释为什么会出现这样的结果。 展开
4个回答
展开全部
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
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)、输入/输出接口和其他功能部件集成在一块 在一个小块的集成电路上,从而实现对整个电路或系统的数字式控制。单片机不是完成某一个逻辑功能的芯片,而是...
点击进入详情页
本回答由意法半导体(中国)投资有限公司提供
展开全部
这不就是printf的本职工作吗? 很奇怪吗? 你不知道printf就是用来干这个的?
%后面的数字是表示输出字符串的宽度,如果不足,就在前面添空格,
#后面有x的话会在字符串前加0x,表示十六进制
%后面的数字是表示输出字符串的宽度,如果不足,就在前面添空格,
#后面有x的话会在字符串前加0x,表示十六进制
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
%8x 代表输出八位 不足八位的,前面补空格
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
为什么输出的格式符是x?这样会把输出结果转换成16进制输出了 所以程序输出结果是没问题的
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询