2014-03-28 64 views
3

我的朋友正在准备一些银行考试。问的问题是?c中的条件陈述和控制陈述之间是否有区别?

What are the control statement below? 

Options 
1. if and switch 
2.break and if 
3.if and while 
4.break and continue 

和正确答案标为1

我相信所有的选项是正确的?

我的信念是真实的。

它们之间有什么区别吗?

+0

请不要将C标记标记为C++。 –

+0

@NeilKirk:我不明白这可能是一种语言障碍,因为术语在C语言中是用英语定义的。如果银行正在将标准C条款翻译成其他语言的考试,那就更糟了!不过,你是对的,因为这可能最终是银行的错(见我的答案)。 –

+0

“下面的控制语句是什么?”对我来说是无稽之谈。 –

回答

2

的术语是不正确的,因为标准没有定义的一个术语控制语句但由于1被表示为正确答案,然后他们应该说是选择语句

C99 draft standard定义了如下一套涵盖那些在你的问题中列出,选择语句从部分ifswitch6.8.4选择语句声明:

selection-statement: 
    if (expression) statement 
    if (expression) statement else statement 
    switch (expression) statement 

breakcontinue是跳转语句节6.8.6跳转说明

jump-statement: 
    goto identifier ; 
    continue ; 
    break ; 
    return expressionopt ; 

while是一个循环语句段6.8.5循环语句

iteration-statement: 
    while (expression) statement 
    [...] 
0

(你的问题的不同“的声明类型”的定义似乎有点问题。实际上,我不得不根据“控制”和“条件”语句的确切含义来理解你的问题。)

编号控制语句是改变程序。

条件语句是基于条件做到的。

我认为正确答案是(4)。

+1

'[需要的引证]'。你的“控制语句”定义 –

+0

@LightnessRacesinOrbit你有权利,我的答案更清晰。 – peterh

2

你的朋友被问到的问题从根本上被打破了,因为C没有定义“控制语句”之类的东西。即使是这样,我的直觉是它应该覆盖这些关键字的全部

因此,试图分析什么是和不在这个伞下是愚蠢的差事。

鉴于他们认为#1是正确的答案,它看起来像他们的意思是选择语句,即“条件”,如你所说。 while,breakcontinue显然不属于该类别。

您可以阅读关于C99中的§ 6.8(或其他版本的等价物)下所有不同种类的语句。

坦率地说,我得到了这个烂摊子后去一家不同的银行工作。

+1

绝对如此。制作这个问题的银行面试官在另一个世界。 –

3

看起来像谁设置考试发明了自己的术语。 “控制语句”不是C或C++中的官方术语。

ifswitch选择语句

while循环语句(与dofor一起)。

breakcontinue跳转语句(与returngoto一起)。

+0

1)“if,switch,while”在条件下工作并在该条件下进行选择。 2)“break,continue”是可以改变执行流程的控制语句,以及同样工作的“goto”,并且所有称为跳转语句3)在第1,2点,我可以说答案必须是(4) - > break继续。 –