关于char定义的一个不理解的选项

img


用排除法能知道这个算B,但是不太了解B选项单引号里面的是什么意思

  1. 首先 \ 是转义字符,那说明后面的内容不是字面意思;
  2. 那转义字符后面的数字如何处理呢?

按最大匹配进行解释是指在解析转义字符时,尽可能多地匹配后面的数字,直到达到八进制数或十六进制数的位数上限,或者遇到非数字字符为止。例如,\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进制了

【相关推荐】



  • 你可以参考下这个问题的回答, 看看是否对你有帮助, 链接: https://ask.csdn.net/questions/7481384
  • 这篇博客你也可以参考下:已知有两个按元素值递增有序的顺序表A和B,设计一个算法将表A和表B的全部元素归并为一个按元素值递增有序的顺序表C。
  • 您还可以看一下 冯传宇老师的玩转微信小程序 实战高仿B站小程序课程中的 评论展示组件的封装及数据展示小节, 巩固相关知识点
  • 除此之外, 这篇博客: 专升本C语言中的 编写一个程序,输出菱形图案,第一行为一个字母A,第二行为三个字母B,依此类推 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:

    ①方法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;
    }
    

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^