有一次无意间在敲代码的时候无意间想到一个问题,总所周知,当我们打印字符但类型设为整形时,通常会打印出该字符所对应的ASCII值。
但如果当我把两个字符当一起的时候,按照同样的方法打印出来的是什么呢?
这就让我很好奇了(大佬轻喷,即使可能很简单,但是这只是一位爱探索的小白的好奇心而已)
#include<stdio.h>
int main()
{
printf("%d", 'ab');
return 0;
}
当我们运行这一段代码的时候,输出的结果如下图
按照常用的逻辑思维,应该是输出两个ASCII码值的相加,但这里的结果显然不是。
随后,我便想到了二进制的相加
但两个二进制数相加结果为 11000011,化为十进制数为195,和结果也不对。
但我初步判断是和二进制有关(因为十进制确实找不出有任何联系)
我便把24930变为二进制数,为0110 0001 0110 0010
再经过对比突然发现,是a,b的ASCII码值二进制数的叠放
即a的01100001和b的01100010放在一起,所组成的二进制数转化为十进制数
如果各位大佬知道原理的,希望您能在评论区提点提点小白我。
个人愚见,望交流学习!! 转载请注明出处
学习是一个需要不断进步不断前进的过程!!希望作者能与读者一起坚持向前!!