要求输入一个字符,输出它的ASCII码int main(){int b;scanf("%c",&b);printf("%c %d",b,b);return 0;}
前面定义b为int,但scanf里输入的是%c,为啥最终还能成功的输出字符的ASCII码?是因为scanf里用的是%C,然后电脑从键盘录入的时候自动把输入的东西录成字符型了?并没有受到前面的那个int影响?
所有可以通过键盘输入的符号,在内存中就是以对应的ASCII码值存储的。
变量b保存的就是输入字符的ASCII码值。
%c是表示这个输入/输出必须是可以显示的字符。换句话说就是在一个txt文件里面能够出现的字符。
你按F1,ctrl,shift,alt之类的按键,是不能得到ASCII码的。
%c读取了字符,输出%c是字符,%d是 ascii,这是自动的。
你说的应该是对的,int和char是通用的,我又用float型试了一下不成功,不过我以前还真没注意过这个问题
ASCII字符就是只占一个字节的整型数据,推荐学习CSAPP数据编码一章
因为每个字符的编码实际上也是用整型编的。如果你将它强行转换为整型,是可以转的
你只需要记住“int类型可以用%d格式输出数值,char类型既可以用%c格式输出字符,也可以用%d格式输出该字符对应的ASCII码”就可以了。
scanf()函数替你进行了转化
printf()替你进行了转化