c语言题目

1、为什么16进制中没有8?
2、为什么‘\1011’不是合法转义字符
3、printf(“\n*s2=%15s*”,"chinabeijing");输出的是什么?是按照什么规则输出的?如果把15改成-5又是什么情况?
4、long y=-43456;printf(“y=%-8ld\n”,y);输出的y的值是怎么看的?如果把-8改成-08、08、+8又是什么值?为什么是这样的?
5、当a=3,b=2,c=1时,表达式f=a>b>c的值为什么是0.
以上,希望有详细的解释,答案我都有,就是不知道为什么。

1、第一个不太明白,16进制是0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F,有8啊
2、转义字符的格式是:\ddd:8进制表示字符的方法,\xdd:16进制表示字符的方法,d就代表一个数字,反斜杠+4个数字无法正常转译。
3、输出结果:
*s2= chinabeijing*
输出字符串,\n输出回车,*s2=以字符串形式输出,%15s是格式化输出,表示输出的字符串右对齐,占15个字符长度,chinabeijing是长度为12的字符串,则需在左端补齐3个空格,最后再输出*。
如果变成-5,则输出格式变为,输出的字符串左对齐,占5个字符长度,由于chinabeijing占12个字符长度,所以需要截取5个字符输出。输出结果:
*s2=china*
4、-8输出结果:y=-43456
-08输出结果:y=-43456

08输出结果:y=-0043456

+8输出结果:y= -43456
-8和+8的结果比较好理解。
-08,这里的0不起作用,负号-的作用是将整数左对齐输出,后面会将08看成一个整数,如果不足8位,后面的会用空格补充 。
08,这里的0起作用,将整数右对齐输出,共输出8位,如果不足8位,左面用0补充,即08的结果中多出两个0。
5、计算机语言中一般是没有连比运算的,所以这里的表达式是分两次进行的,先比较a>b,然后用a>b的结果与c比较。
a=3,b=2,c=1; f=a>b>c;先做a>b运算,即3>2,正确(正确的结果为1,错误的结果为0,这是比较结果的数值化,即真值。)所以a>b得到的结果是1,然后将a>b的结果与c比较,即1>1,错误,结果为0
温馨提示:答案为网友推荐,仅供参考
第1个回答  2019-08-26
|8567
|
%-06d
表示该整数占六个格。不够的左边补0
的意思,这里的-表示向左对齐,因此在右边补两个空格,就变成|8567
|。
如果是%06d,则应该显示|008567|。

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网