关于ascll码表的一些发现

针对于ascll码表,最近发现的有以下几点:

1.在算数运算时,或者初始化一个数时,都是按照ascll码表进行转换后运算的,在输出的时候如果用“%d”转换一个字符时,就会通过ascll码表进行转换,同理用“%c”转换一个整数时,也是先通过ascll表转换成一个字符再输出,在“&”“|”中先将它们的字符转换成数字然后再转换成二进制进行运算。

#include<stdio.h>
int main() {
	int a = 97;
	int b = 'a';
	char c = a & b;
	int d = a | b;
	int e = a + b;
	int f = a - b;
	int g = a * b;
	int h = a / b;
	char i = 97;
	int j = i;
	printf("a=%d\n",a);
	printf("b=%c\n", b);
	printf("c=%c\n", c);
	printf("d=%d\n", d);
	printf("e=%d\n", e);
	printf("f=%d\n", f);
	printf("g=%d\n", g);
	printf("h=%d\n", h);
	printf("i=%c\n", i);
	printf("j=%c\n", j);
	return 0;
}

#include<stdio.h>
int main() {
	//进一步探究,将ascll码97-122的字符罗列出来,再将字符通过ascll码表转换成整数
	int i = 97;
	while (i <= 122) {
		printf("%c",i);
      printf("=%d ",i);
		i++;
	}
	return 0;
}

2.判断表达式之间由于数据类型不同,也是通过ascll码相互转换后进行比较的

#include<stdio.h>
int main() {
	////探究判断表达式两边不同类型是通过什么样的方式判断的
	//int a = 'b';
	//printf("b=%c",a);//由上可知,将字符“b”通过“ascll”表转换成一个整数,
	////再通过转换说明%c,将整数通过ascll表转换成一个字符,结果输出仍然是字符b
	int a = 100;
	if (a == 'd') {
		printf("条件表达式中的逻辑运算符“==”不同类型之间通过ascll表转换进行对比\n");
	}
	else {
		printf("继续探究\n");
	}
	return 0;
}

3.探究ascll表与getchar()之间的关系

#include<stdio.h>
int main() {
	//探究ascll表与getchar()之间的关系
	int a = 0;
	int b = 100;
	a = getchar();//getchar()获取的字符通过ascll码转换后变成了整数
	putchar(a);//putchar()将整数再通过ascll码转换成字符并输出
	printf("\n");
	printf("%c\n",a);//%c转换说明成字符,也是通过ascll码将整数转换成字符
	printf("%d\n", a);//输入的字符在ascll码表中代表的整数
	return 0;
}

当超过ascll码表后,又发现了一些规律:

 

#include<stdio.h>
int main() {
    int a = 0;
    while (a <= 300) {
        char c = a;
        int d = c;
        printf("%d", a);//输出整数a的值
        printf("=%c ",c);//将整数a转换成字符后输出
        printf("= ");
        printf("%d  ", d);//对字符再转换成整数
        a++;
    }
    return 0;
}

 

 

 

可以发现,字码表在128开始变成负数,256开始循环,尚不清楚原理,还在查找资料中。

单纯手打,靠代码试出来的,欢迎批评指正,越批评,越开心!

 

posted @ 2022-06-05 11:08  浅影阿  阅读(94)  评论(0编辑  收藏  举报