关于C语言printf函数和栈的问题

请大神赐教,Cprimerplus第4章提到了压栈和弹栈的顺序问题,即压栈是自右至左,而弹栈则是自左至右,那么问题就来了:现在存一个整数,比如65618(应该是4个字节的... 请大神赐教,C primer plus第4章提到了压栈和弹栈的顺序问题,即压栈是自右至左,而弹栈则是自左至右,那么问题就来了:现在存一个整数,比如65618(应该是4个字节的),用printf函数配合%hd说明符的时候为什么只显示后两个字节(课本上说截断后两个字节),弹栈不是先弹前两个字节吗,为什么printf函数不显示先弹栈的两个字节? 展开
 我来答
帐号已注销

2019-01-27
知道答主
回答量:16
采纳率:0%
帮助的人:1.6万
展开全部
对于浮点输出格式来说
%m.nf
其中m是输出宽度,n是精度,f是格式化控制符
m指定的是输出数字字符串的最小长度,比如你输出
printf( "%2.3f" , 123.456 ); // 由于实际输出的数字123.456共有7个字符,大于2个字符数量,所以这里的2其实实际上没起到什么作用,不过如果你printf( "%8.3f" , 123.456 );,8-7=1,那么结果将在数字前面补一个空格字符,使用printf( "%08.3f" , 123.456 );则是补一个字符'0'
所以e如果存在于被输出的数字串里的话(比如使用%e),它也是要占用m的计数的,包括小数点。
n则是指定输出精度,也就是小数点后保留几位,默认不指定.n的时候printf会自动调整输出到默认精确位,如果指定了n的话,printf则把数字保留小数点后n位输出。
所以printf( "%f", 123.456 );如果输出123.456000的话,那么printf( "%.2f", 123.456 );则输出123.46,
fastfs
2019-01-27 · TA获得超过1423个赞
知道大有可为答主
回答量:2659
采纳率:62%
帮助的人:768万
展开全部
一次压和弹都是4字节 这是一个整体 不会分开
更多追问追答
追问
谢谢,但是还有个问题,比如说这个
printf(“%ld %ld”,a,b);(虽然我知道这里的说明符不对)
若前面声明了ab两个变量为64double位的,按照课本的说法,则输出的结果则为:第一个数值为a的前32位,第二个数值是a的后32位。为什么显示的两个数值不是ab的后32位?
追答
为什么要输出ab的后32位
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式