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题也有类似问题
#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题也有类似问题