Lot*_*har 11 c string literals
在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
Run Code Online (Sandbox Code Playgroud)
use*_*116 15
不幸的是,你偶然发现了\x
将读取每个最后一个看似十六进制1,2的字符的事实,而你需要打破这个:
const char *x = "\xBC" "d"; /* const added to satisfy literal assignment probs */
Run Code Online (Sandbox Code Playgroud)
考虑一下这个程序的输出:
/* wide.c */
#include <stdio.h>
int main(int argc, char **argv)
{
const char *x = "\x000000000000021";
return printf("%s\n", x);
}
Run Code Online (Sandbox Code Playgroud)
编译并执行:
C:\temp>cl /nologo wide.c
wide.c
C:\temp>wide
!
Run Code Online (Sandbox Code Playgroud)