关于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开始循环,尚不清楚原理,还在查找资料中。
单纯手打,靠代码试出来的,欢迎批评指正,越批评,越开心!