当我做printf(“%d”,'='+'=');,为什么它显示122.Please详细解释

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了当我做printf(“%d”,'='+'=');,为什么它显示122.Please详细解释相关的知识,希望对你有一定的参考价值。

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

代码如上,它只是执行'='+'='并打印值122.(为什么??)..

答案

因为'='的ASCII值是61

ASCII Values

另一答案

在C中,字符使用ascii在内部表示。字符只是数字类型,因此添加它们只会添加ascii *值。 (谷歌ASCII了解更多信息。)

在ascii中,'='61,所以'=' + '='61 + 61122相同,这就是你得到的。

如果你希望+连接a1a2,不幸的是情况并非如此,因为chars是C中的数值。如果这是你想要的,我会google C strings(关于C如何处理字符串)作为起点。

如果你期望它做其他事情,我可以编辑我的答案来解释它。

*编辑:正如飞翔指出的那样,C标准不保证ASCII。但是,在大多数现代系统中,使用ASCII,并且无论使用何种编码,我的类似答案都适用于您的程序。

以上是关于当我做printf(“%d”,'='+'=');,为什么它显示122.Please详细解释的主要内容,如果未能解决你的问题,请参考以下文章