当我做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详细解释的主要内容,如果未能解决你的问题,请参考以下文章

print、printf、println的区别

C语言,如何给3个char变量赋值?不能直接char a='D',这种。要求用printf,scanf.

[Error] expected expression before','token 是啥意思?

逆向工程-printf()函数与参数传递

编写程序'任何三个整数,按照从大到小的排列顺序输出或输出最大最小值

C语言题目,已知字母A的ASCII码为十进制的65