以下是代码:
#include <stdio.h>
int main()
{
printf("%d %c",'u0','u0');
return 0;
}
当我在我的机器上运行它时,输出是“30000 0”,我从未见过'u0'用于表示一个字符(或者实际上可能是一个整数)。 也许这意味着字符/整数是无符号的?
答案 0 :(得分:5)
这是一个多字符常量。它具有类型int
和实现定义的值。
引用C标准的最新草案(N1570),第6.4.4.4节第10段:
包含多个的整数字符常量的值 性格(例如,
'ab'
),或者包含不映射到单字节执行字符的字符或转义序列, 实现定义的。
至于为什么它具有特定值30000
,显然你的编译器给常量'u0'
赋值'u' << 8 + '0'
。由于'u'==117
和'0'==48
(在基于ASCII的字符集中),结果为30000
。但不要指望那个特定的价值;它可能因其他编译器而异。
我建议不要使用这些常量。