使用MSVC 2010,我尝试在C或C ++模式下编译它(需要在两者中编译)和 这是行不通的。为什么?我想在文档中发现'\ x'将接下来的两个字符作为十六进制字符而不是更多(使用\ X时为4个字符)。
我还了解到,在C源代码中没有可移植的方式在ASCII之外使用字符代码,所以如何指定一些德语ISO-8859-1字符?
int main() {
char* x = "\xBCd"; // Why is this not char(188) + 'd'
}
// returns test.c(2) : error C2022: '3021' : too big for character
// and a warning with GCC
答案 0 :(得分:13)
不幸的是,你偶然发现\x
会读取每个似乎是十六进制 1,2 的最后一个字符的事实,而不是你需要解决这个问题:
const char *x = "\xBC" "d"; /* const added to satisfy literal assignment probs */
考虑该程序的输出:
/* wide.c */
#include <stdio.h>
int main(int argc, char **argv)
{
const char *x = "\x000000000000021";
return printf("%s\n", x);
}
编译并执行:
C:\temp>cl /nologo wide.c
wide.c
C:\temp>wide
!