为什么运行会是这样的,刚写不久问一下

#include<stdio.h>
int main()
{
char a,b,c;
int d;
a='\5';
b='\60';
c='\A' ;
d=1089;
printf("a=%c,c=%d,d=%c\n",a,b,c,d);
return 0;

img



a='\5';  \5是8进制表示,相当于a=5 (ascii码值),是一个控制字符,\后面跟数字的时候,表示8进制,且最多可以有3位8进制数字
b='\60';  \60也是8进制表示,相当于b=48  (ascii码值)
c='\A' ;  

printf函数中,有3个%d,但是变量是4个,参数个数不匹配
a=%c输出的是a的值,是控制字符(控制字符显示不出来,或者显示为方框)
c=%d输出的是b的值,是48(char 提升为int类型,输出b的ascii码值)
d=%c输出的是c的值,是A(转移字符失效,c='\A' 变成 c='A'

a = '5'
你写成a = '\5'的话,就是ASCII码为5的字符,这是不可见字符,所以显示成方框了。'5'才是字符5
另外printf语句只写了3个格式符,但却有四个变量 。所以变量d没有输出。你漏了b输出,后面两个错位了

您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!
PS:问答VIP年卡 【限时加赠:IT技术图书免费领】,了解详情>>> https://vip.csdn.net/askvip?utm_source=1146287632