C编程-在下面的程序中,'\'在t[5\]中是什么意思

C programming-In the below program what does '\' means in t[5\]

#include <stdio.h> 
int main(void) { 
    int i,t[5\]; 
    for(i = 0; i < 5; i++) 
        t[i\] = 2 * i;
    i = 0; 
    for(i = 0; i < 5; i++) 
        i += t[i\]; 
    printf("%d",i); 
    return 0; 
}

数组中的\是什么意思?提前致谢。

我在 CLA (C Programming Language Certified Associate) sample paper 中找到了这个程序。

在这种情况下不允许使用反斜杠,这是无效的语法。 您可以在 ideone online 处验证它。 您收到以下错误:

prog.c: In function ‘main’:
prog.c:4:13: error: stray ‘\’ in program
    int i,t[5\];
             ^
prog.c:7:10: error: stray ‘\’ in program
       t[i\] = 2 * i; i = 0;
          ^
prog.c:11:15: error: stray ‘\’ in program
       i += t[i\];
               ^

如果你想编译代码没有错误你只需要删除无效的 \.

实际上,您使用反斜杠作为转义字符,例如在转义序列中使用它,例如描述为 here at wikipedia.

的换行符 '\n'

表示:

Christopher Boguslawski,C++ 研究所所长,

未能让某人正确检查他们的示例问题是否有错误。

代码不会运行它的编写方式。

可以推测他们希望 \ 位于行尾(因为它是一个有效的行继续字符)并且忘记了将换行符放入 return 中。虽然这会修复问题,为什么他们会在每个结束括号之前这样做是没有意义的。

更有意义的是,他们可能对整个文档进行了 "find and replace" 操作,并意外传播了一个错误。

推测:可能某些排字员将所有数组写为:t<|5|>(或其他一些使它们返回并用适当的括号替换的配置。)

然后出于懒惰,他们做了一个 Find <| Replace [ 没关系。

然后找|>替换\]这样不行

由于 \] 在键盘上紧挨着,所以哪种方式有意义。 (他们可能指手画脚。)

事实上整个文档在每个 ] 之前都有一个 \ 是确凿的证据。

所以很可能是草率 Find/Replace 弃用了他们的整个文档。

所以这意味着 t[5\] 中的 \ 是错误的。

程序不正确,\]语法错误

一个可能的解释是作者不得不转义一些C运算符(例如[)来排版代码片段,并且他还转义了],而文字处理软件似乎没有这样做...

忽略这些 \ 或将所有出现的 \] 替换为 ]

请注意,这是一个棘手的问题,编写此代码的程序员应该被解雇。

另请注意 the document in question 还有其他错误。例如问题 11 读取:

What happens if you try to compile and run this program?

#include <stdio.h>
  int main(void) {
      int t[2\][3\] = { { 3, 2, 1 }, { 1, 2, 3} };
      printf("%d", sizeof(t) / sizeof(t[1\][1\]));
      return 0;
  }

A. the program outputs 6
B. the program outputs 3
C. the program outputs 2
D. the program outputs 4

忽略 \],程序有潜在的未定义行为,因为 %d 需要 int 但传递给 printf() 的值的类型为 size_t

第13、14、15、17题也有类似问题