C语言中的%%%d和%%%

一.有这两个例子1.inta=1;printf("%%%d",a);这时候的输出结果是%1;2.inta=1;printf("%%%",a);这时候的输出结果是%%.如果... 一.有这两个例子
1. int a=1; printf("%%%d",a);这时候的输出结果是%1;
2. int a=1; printf("%%%",a); 这时候的输出结果是%%.
如果按第二种情况看,三个百分号输出两个百分号,那么第一种情况的输出结果不是应该是:%%d吗?
第一种情况,为什么不是先输出两个百分号,而是输出一个之后剩下的%会和d结合形成格式符?
这两种情况要怎么区别?
二.单精度型的数据在输出时小数位数是6位.但是提供给它的有效数字是7位
这两者矛盾吗?
双精度型数据在输出时小数位数也是六位吗?但是有效数字是15-16位,这两者要怎么区别?
举个例子说:1,float a=11124.2569766841;printf("%f",a); 结果是11124.256836
为什么只提供7位有效数字却有那么多位数?而且后面几位还和原数不一样?
2.double a=11124.2569766841; printf("%lf",a); 结果是11124.256977
以上1和2这两个结果各是怎么得出的?
3.float a=11124.2569766841;printf("%e",a); 结果是1.11243e+04.
4.double a=11124.2569766841; printf("%e",a);结果是1.11243e+04.这个情况为什么答案相同?小数位数为什么不是六位而是总宽度六位?
也就是说,什么情况下输出的小数位数是6位,什么情况下输出的总宽度是6位?这些要怎么区别开?
三.例如:float a=11124.2569766841;printf("%g",a);结果是11124.3. double a=111124.2569766841; printf("%g",a); 结果也是11124.3。
%g是按最小宽度输出,这么看来float和double最小宽度是7位吗?为什么double的最小宽度不会比float长?

四.int a=32767; printf("%p",a); 结果是7FFF。P是输出内存变量地址,为什么是这个结果?%P的输出在C语言二级考试中会考吗?

五.反码: 11111010

+ 1

_____________

补码: 11111011
我知道是根据逢二进一算出的,但是这个过程具体是怎么算的?逢二进一的话应该会有很多零啊.
问题很多,希望各位知道哪些就回答哪些,一两个也没关系,拜托了.
一.第一个问题,我知道输出的结合方式,我不是问这个.有一种题目:int a; pintf("%%d",a);输出结果是%d.这个时候的%并没有和d结合.所以为什么int a; pintf("%%%d",a);的结果不是%%d?而是最后一个%会和d结合成格式符.
二.第二个问题中的1,2我已经知道了,不用回答.3,4中按%e输出的结果是:1.11243e+04.总宽度是六位,这是规定好的吗?
三.第三和四个问题也不用回答了.
四:11111010是反码,加了1成补码11111011.这个计算过程是怎么样的,我知道是逢二进一,我要的是具体的计算过程,是怎么样逢二进一的.拜托各位了
展开
 我来答
lpsongwei
2007-09-01 · TA获得超过124个赞
知道答主
回答量:262
采纳率:0%
帮助的人:0
展开全部
第5个问题你给的反码是11111010吗?
还是原码
说清楚点啊!
是反码不就成了!
2进制规则
0+0=0
0+1=1
1+1=0前面进一位
111111010后边的0+1不就是11111011了吗?
哪不明白?
貌似你说的那个6位能改。我也忘了。书上后面应该有说到滴!
对不起啊 我也很久不用C了
自己去书上找找吧!
海外精选
2007-08-24 · 超过28用户采纳过TA的回答
知道答主
回答量:118
采纳率:0%
帮助的人:102万
展开全部
问题太多了,回答你第一个吧
%后面是格式符号
所以%%输出%,%d输出一个整数,第一个是这么组合的
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式