a是数字0,循环打印出来的字符是a('a' + 0),b('a' + 1),e('a' + 4),j('a' + 9)
字符0是'0'
x*x代码的确实是字符x的ASCII码的乘积,但是main函数里的a代表的是ASCII码0到3之间的字符
(但不是字符'0'到'3',字符'0'的ASCII码是48),所以计算四次的过程是这样的:
第一次,a=0, f()函数中,x*x+'a'= 0*0+'a'='a', 然后main函数for循环里,b='a', 所以就打印字符'a';
第二次,a=1, f()函数中,x*x+'a'= 1*1+'a'='b', 然后main函数for循环里,b='b', 所以就打印字符'b';
第三次,a=2, f()函数中,x*x+'a'= 2*2+'a'='e', 然后main函数for循环里,b='e', 所以就打印字符'e';
第四次,a=3, f()函数中,x*x+'a'= 3*3+'a'='j', 然后main函数for循环里,b='j', 所以就打印字符'j';
然后,a=4, for循环就退出了。<br/>
参考链接:
ASCII 表 | 菜鸟教程
#include <stdio.h>
char f(char x){
return x*x+'a';
}
int main(void){
char a,b=0;
for(a=0;a<4;a+=1){
b=f(a);
putchar(b);
}
return 0;
}