C 8进制定义的问题

char a='\101';
char b='\0101';//如果定义为 b=0101得到的就是65
printf(",%d,",a);//65
printf("%d,",b);//49------为什么是49?
char c='\77';
char d='\077';
printf("%d,",c);//63
printf("%d,",d);//63

char a='\101'是八进制表示ASCII码的合法语句,规定这种表示法\后是3位。八进制101刚好是十进制的65,正确。

而char b='\0101';是不合法的:编译器先按3位解释,\010是八进制表示的退一格,即\b。后面是1,它的十进制ASCII是十进制49。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-03-21
char b='\0101'; 这应该是个非法的语句 \后的数字只能最多三位8进制数

常量整型数以0开头的,系统就当作8进制数,如0101=64+0+1=65

相关了解……

你可能感兴趣的内容

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