当我执行printf(“%d”,'='+'=');时,为什么显示122。请详细说明

时间:2018-07-30 16:48:43

标签: c character-encoding

main()
{
char a1='=';
char a2='=';
printf("%d",a1+a2);
}

代码如上,它只执行'='+'='并输出值122.(为什么?)。.

2 个答案:

答案 0 :(得分:1)

因为'='的ASCII值为61

ASCII Values

答案 1 :(得分:0)

在C中,字符在内部使用ascii表示。字符只是数字类型,因此添加它们只会添加ascii *值。 (有关此信息,请使用Google ASCII。)

在ascii中,'='61,因此'=' + '='61 + 61122相同,这就是您要得到的。

如果您希望+a1a2串联在一起,那么不幸的是事实并非如此,因为char是C中的数字值。您需要,我以Google C strings(有关C如何处理字符串)为起点。

如果您希望它做其他事情,我也可以编辑答案以解释这一点。

* EDIT:正如Fei Xiang指出的那样,C标准不保证ASCII。但是,在大多数现代系统上,都使用ASCII,并且无论使用哪种编码,我的程序都将得到类似的答案。