中考半命题作文:一个c语言程序的疑惑

来源:百度文库 编辑:高校问答 时间:2024/04/28 22:17:34
#include <stdio.h>
main()
{
char a='2',b='4',c='6';
int x,y,z,k=0;
x=a-'0';
y=b-'0';
z=c-'0';
k=k*10+x;
k=k*10+y;
k=k*10+z;
printf("%d %d %d %d\n",x,y,z,k);
}

为什么这个c语言程序中的k输出的是246呢?
整个程序中它不是数据类型吗?怎么运算过程好象他变成了字符类型呢?怎么运算过程是和"4","6" ,"&&"呢???

运算过程是这样的,首先将ASCII字符转换成整数,而字符2的转换后的整数值正好比字符0的整数值大2,4和6也和2的情况是一样的!所以你才会得到246!

x='2'-'0'=2
y='4'-'0'=4
z='6'-'0'=6
k=2
k=k*2+4=24
k=24*k+6=246

K第一次=X=2第二次=2*10+Y=24,第三次=24*10+Z=246