1

可能重复:
在 C/C++ 中为什么 do while(expression); 需要半冒号吗?

与“while”循环相比,我了解“do while”循环的结构。我不明白的是,为什么语言需要这种语法:

do{
     statements();
} while(condition);

语言在这个表达式的末尾有一个分号是绝对必要的吗?或者这更多是为了便于编写编译器?

4

2 回答 2

1

由于}不是结尾,因此有一些方法可以知道到达语句的结尾,因此是分号。

没有它也可以编写一种语言,但在这些语言中要求它更有意义。

于 2011-04-12T23:37:32.673 回答
0

至少在java中,你不能写:

} while (i < 10) && (j != 8);

没有收到此类错误消息:

NodeSorter.java:24: ';' expected
        } while (i < 10) && (j != 8);
                        ^
NodeSorter.java:24: not a statement
        } while (i < 10) && (j != 8);
                               ^
NodeSorter.java:24: ';' expected
        } while (i < 10) && (j != 8);
                                   ^
3 errors

所以我想这是出于对称的原因——也许以这种方式编写解析器更容易。

于 2011-04-12T23:42:15.280 回答