【C语言求助】

#include"stdio.h"
void main()
{
char a='1',b='2';
printf("%c,",b++);
printf("%d\n",b-a);
}
程序输出 的结果为 。
为什么是2.2 ?这种题怎么求解?
题目条件 :数字字符0的ASCII码为48

第1个回答  2015-07-01
b++是先算b在加1,所以你先输出b,输出后b+1,等你在输出下一条是b已经变成3了所以2.2
第2个回答  推荐于2016-02-17

char a='1',b='2';
printf("%c,",b++);    //b++,++在后面,这里会先打印b的值,打印


2,然后b再自增
printf("%d\n",b-a);    //上一条语句自增后 b == ‘3’,所以b -a =2

追问

那他告诉你 数字字符0的ASCII码为48 没有什么用吗

追答

a和b里面的‘1’,‘2’是以字符存储的,如果你用%d来直接打印,会输出49,50。也就是在0的ASCII码基础上+1,+2。
明白了么?

本回答被提问者采纳
第3个回答  2015-07-01
b++是当前语句运行完b再自增1;
++b是b自增1再运行当前语句;
b - a 是把它们的ascll码相减
第4个回答  2015-07-01
第一个里面是先输出b的值,然后再++
printf ("%c", b)输出的是字符2, b++之后得到'3'
‘3'-'1'=2输出的是数字2
第5个回答  2020-01-13
相似回答