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。
而char b='\0101';是不合法的:编译器先按3位解释,\010是八进制表示的退一格,即\b。后面是1,它的十进制ASCII是十进制49。
温馨提示:答案为网友推荐,仅供参考
第1个回答 2013-03-21
char b='\0101'; 这应该是个非法的语句 \后的数字只能最多三位8进制数
常量整型数以0开头的,系统就当作8进制数,如0101=64+0+1=65
常量整型数以0开头的,系统就当作8进制数,如0101=64+0+1=65