2017-06-22 81 views
0
#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; 
} 

什么\在阵列装置意味着什么?提前致谢。C编程-在下面的程序什么呢 '' 在T [5 ]

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

+3

对我来说看起来不像C。 –

+8

你试过编译它吗?你有错误吗?你应该这样做,因为反斜杠的唯一含义是语法错误。你从哪里得到代码?这可能是一个复制粘贴错误?或者一些代码到html代码失败? –

+3

正如您所看到的,代码片段中的降价代码不起作用,所以请在代码中避免使用它们。改为在代码中使用注释。请编辑您的问题以删除非工作**粗体**标记。 –

回答

4

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

一种可能的解释是笔者不得不逃离一些C运算符(如[)来排版代码片段,他也逃脱]其字处理软件似乎独自离开......

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

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

还要注意the document in question有其他错误。例如11题写着:如果你尝试编译并运行此程序

会发生什么?

#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.方案产出6
B.方案产出3
C.方案产出2
D.方案产出4

忽略\],程序有潜在的未定义行为为%d预计int但传递到printf()的值有size_t类型。

问题13,14,15,17有一个类似的问题。

1

在这种情况下不允许使用反斜杠,它的语法无效。 你可以在这里验证它在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\]; 
      ^

实际上,您使用反斜杠作为转义字符来使用它,例如在转义序列中使用它,例如'\n'(描述为here at wikipedia)。

+1

在每个\我的版本给出答案C:13后放了一个换行符。 –

3

这意味着:

克里斯托弗Boguslawski,总统在C++研究所,

未能有人正确地检查过他们的样题的错误。

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

人们可以推测,他们希望\是在该行的末尾(因为它是一个有效续行字符)和忘了在换行回车。虽然这将解决这个问题,它不没有道理,为什么他们会在每个末端支架之前这样做。

更合理的是,他们可能会在整个文档中“发现并替换”并偶然传播错误。

在猜测:可能是一些排版写的所有阵列为:(或者说让他们回去和适当的支架更换一些其他配置)t<|5|>

然后在一个合适的懒惰的,他们做了一个查找<|替换[没关系。

然后找到|>替换\]这是不好的。

哪种有意义,因为\]在键盘上彼此相邻。 (他们可能胖手指吧。)

整个文档具有之前\]是确凿的事实。

因此,它很可能是一个草率的查找/替换,不赞成他们的整个文档。

所以这意味着\t[5\]是一个错误。

相关问题