我是一名计算机科学专业的学生,不久前我们的教授向我们解释说,在C语言中,当只有一个语句时我们可以
删除大括号:
if (a)
do b
但我们做不到这样的事情:
if(a)
do b
do c
因为那会做不止一个陈述.
但它也告诉我们,删除花括号有一个例外,即使它只是一个语句,我们也做不到.我做了很多搜索,但我发现的唯一一件事就是我不能在do-while循环中做到这一点,但我们在讨论if语句,有什么帮助吗?
编辑:我们也在谈论嵌套的if语句,也许是关于那个?
你教授可能正在谈论这样的情况:
if (a)
if (b)
printf("a and b\n");
else // this goes with the inner "if"
printf("not a\n");
与缩进建议的相反,else与外部if语句无关,而与内部if语句相关联.在这种情况下,您需要将大括号添加到外部的主体中,以便正确关联其他内容:
if (a) {
if (b)
printf("a and b\n");
}
else
printf("not a\n");
最好总是对条件和循环结构的主体使用大括号来防止这种歧义以及随之而来的错误.