【发布时间】:2016-04-05 07:59:18
【问题描述】:
考虑一个 C 程序:
#include <stdio.h>
int main (void)
{
int x = 'a';
printf("%d", x);
}
根据 ASCII 值表,这里的输出是 97。
但在下面的例子中:
#include <stdio.h>
int main(void)
{
int x ='aa';
printf("%d", x);
}
输出为24929。
谁能解释一下文字是如何转换成这个整数值的?
【问题讨论】:
-
您的第二个示例编译不正确:c 未定义,x 初始化不正确。我认为您的行为未定义。
-
您的代码中没有字符串文字,只有字符文字。
-
注意:多字符文字的值是实现定义的。
-
@MichaelWalz:不是真的——更好的测试是使用两个不同的字符。
标签: c string literals string-literals