按最大匹配进行解释是指在解析转义字符时,尽可能多地匹配后面的数字,直到达到八进制数或十六进制数的位数上限,或者遇到非数字字符为止。例如,\1010 会被解释为 \101 和 0 两个部分,而不是 \10 和 10 两个部分,因为 \101 是一个三位的八进制数,而 \10 是一个两位的八进制数。如果后面是一位或两位数字,那么也会被识别为八进制数,只要它们满足八进制数的范围(0-7)。例如,\12 就是一个八进制数,它的十进制值是10,对应的字符是换行符。而 \9 就不是一个八进制数,因为9不在0-7的范围内,所以它会被解释为一个普通的字符,它的十进制值是57,对应的字符是9。
举例:
#include <stdio.h>
int main()
{
char a='\101';
char b[]="\1010";
printf("%c %d\n",a,a);
printf("%s",b);
return 0;
}
输出:
A 65
A0
B这是8进制了
【相关推荐】
①方法1:
#include<stdio.h>
#include<math.h>
int main(){
char c;
int i,j,k,n;
printf("输入n:\n");
scanf("%d",&n);
c='A';
for(k=1;k<=n;k++){
for(i=1;i<=n-k;i++)printf(" ");
for(j=1;j<=k*2-1;j++)printf("%c",c);
c++;
printf("\n");
}
for(k=1;k<n;k++){
for(i=0;i<k;i++)printf(" ");
for(j=2*(n-k);j>0;j--)printf("%c",c);
c++;
printf("\n");
}
return 0;
}
②方法2:
#include<stdio.h>
#include<math.h>
int main(){
char c;
int i,j,k,n;
printf("输入n:\n");
scanf("%d",&n);
c='A';
for(k=1-n;k<=n-1;k++){
i=n-abs(k);
for(j=1;j<=n-i+1;j++)
printf(" ");
for(j=1;j<=2*i-1;j++)
printf("%c",c);
printf("\n");
c++;
}
return 0;
}
// *
// ***
// *****
//*******
// *****
// ***
// *
#include<stdio.h>
int main() {
int i, j, k;
for (i = 0; i <= 3; i++)
{
for (j = 0; j <= 2 - i; j++)
printf(" ");
for (k = 0; k <= 2 * i; k++)
printf("*");
printf("\n");
}
for (i = 0; i <= 2; i++)
{
for (j = 0; j <= i; j++)
printf(" ");
for (k = 0; k <= 4 - 2 * i; k++)
printf("*");
printf("\n");
}
return 0;
}