C表初始化

标签 c arrays compiler-warnings

我想初始化一个应该包含一些字符的表,以便稍后将其与值进行比较,这是我的代码:

 char z[8] = {' ', '.', '\', ':', 'o', '&', '8', '#', '@'};

虽然我从编译器那里得到了一堆错误消息,其中一些是:

dn08.c: In function ‘main’:

dn08.c:16:37: warning: multi-character character constant [-Wmultichar]
     unsigned char z[8] = {' ', '.', '\', ':', 'o', '&', '8', '#', '@'};      
                                   ^
dn08.c:16:5: warning: large integer implicitly truncated to unsigned type [-Woverflow]
     unsigned char z[8] = {' ', '.', '\', ':', 'o', '&', '8', '#', '@'};
     ^
 dn08.c:16:43: error: expected ‘}’ before ‘:’ token
     unsigned char z[8] = {' ', '.', '\', ':', 'o', '&', '8', '#', '@'};
                                           ^
 dn08.c:16:44: warning: multi-character character constant [-Wmultichar]
     unsigned char z[8] = {' ', '.', '\', ':', 'o', '&', '8', '#', '@'};
                                            ^
 dn08.c:16:49: warning: multi-character character constant [-Wmultichar]
     unsigned char z[8] = {' ', '.', '\', ':', 'o', '&', '8', '#', '@'};
                                                 ^
 dn08.c:16:54: warning: multi-character character constant [-Wmultichar]
     unsigned char z[8] = {' ', '.', '\', ':', 'o', '&', '8', '#', '@'};
                                                      ^
 dn08.c:16:59: warning: multi-character character constant [-Wmultichar]
     unsigned char z[8] = {' ', '.', '\', ':', 'o', '&', '8', '#', '@'};
                                                           ^
 dn08.c:16:63: error: stray ‘#’ in program
     unsigned char z[8] = {' ', '.', '\', ':', 'o', '&', '8', '#', '@'};
                                                               ^
 dn08.c:16:64: warning: multi-character character constant [-Wmultichar]
     unsigned char z[8] = {' ', '.', '\', ':', 'o', '&', '8', '#', '@'};
                                                                ^
 dn08.c:16:68: error: stray ‘@’ in program
     unsigned char z[8] = {' ', '.', '\', ':', 'o', '&', '8', '#', '@'};
                                                                    ^
 dn08.c:16:69: warning: missing terminating ' character
     unsigned char z[8] = {' ', '.', '\', ':', 'o', '&', '8', '#', '@'};
                                                                     ^
 dn08.c:16:43: error: missing terminating ' character
     unsigned char z[8] = {' ', '.', '\', ':', 'o', '&', '8', '#', '@'};
                                           ^
 dn08.c:51:1: error: expected ‘,’ or ‘;’ at end of input
 }
 ^
dn08.c:51:1: error: expected declaration or statement at end of input

最佳答案

你可以尝试转义反斜杠

 char z[] = {' ', '.', '\\', ':', 'o', '&', '8', '#', '@'};

z[2] 处的这两个反斜杠将被视为一个反斜杠,而您的代码中只有一个反斜杠会搞砸一切。

您实际上也不需要指定数组长度,因为它会由编译器自动为您计算。

关于C表初始化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30395719/

相关文章:

c - 如何解释 sprintf 的这种行为?

javascript - 如何从数组中删除所有奇数索引(例如 : a[1], a[3]..)值

php - 在屏幕上回显 MySQL 列值

python - 如何从代码中删除 RunTimeWarning 错误?

c - 商店订购大于原始尺寸的类型 - C 规范

有效地组合两个 32 位? - C

c - 使用 gzip 在 C 中执行

java - 将 std::max 转换为 Java

C++ 语法错误和缺少类型说明符

C编译器警告 "Warning: too many arguments for format"如何修复?