
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 我知道是根据逢二进一算出的,但是这个过程具体是怎么算的?逢二进一的话应该会有很多零啊. 问题很多,希望各位知道哪些就回答哪些,一两个也没关系,拜托了.
展开
展开全部
第5个问题你给的反码是11111010吗?
还是原码
说清楚点啊!
是反码不就成了!
2进制规则
0+0=0
0+1=1
1+1=0前面进一位
111111010后边的0+1不就是11111011了吗?
哪不明白?
貌似你说的那个6位能改。我也忘了。书上后面应该有说到滴!
对不起啊
我也很久不用C了
自己去书上找找吧!
还是原码
说清楚点啊!
是反码不就成了!
2进制规则
0+0=0
0+1=1
1+1=0前面进一位
111111010后边的0+1不就是11111011了吗?
哪不明白?
貌似你说的那个6位能改。我也忘了。书上后面应该有说到滴!
对不起啊
我也很久不用C了
自己去书上找找吧!
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询