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


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

最佳答案

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

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

如果您希望+可以连接a1a2,不幸的是,不是这样,因为char是C中的数字值。如果这是您想要的,我会在Google中搜索C strings( (有关C如何处理字符串的信息)作为起点。

如果您期望它做其他事情,我也可以编辑答案以进行解释。

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

关于c - 当我执行printf(“%d”,'='+'=');时,为什么显示122。请详细说明,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/51598780/

10-11 19:37
查看更多