gpt4 book ai didi

C 字符串文字 "too big for character"

转载 作者:太空狗 更新时间:2023-10-29 16:44:00 26 4
gpt4 key购买 nike

对于 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

最佳答案

不幸的是,您偶然发现 \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
!
  1. 在 VS 2k12、2k10、2k8 和 2k5 附带的 Microsoft C++ 编译器上测试
  2. 测试于 gcc 4.3.4 .

关于C 字符串文字 "too big for character",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13692200/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com