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

问题描述 投票:-7回答:2
main()
{
char a1='=';
char a2='=';
printf("%d",a1+a2);
}

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

c character-encoding
2个回答
1
投票

因为'='的ASCII值是61

ASCII Values


0
投票

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

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

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

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

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

© www.soinside.com 2019 - 2024. All rights reserved.