C++ 通过分支语句编写循环与普通循环之间有什么区别

C++ 通过分支语句编写循环与普通循环之间有什么区别,c++,loops,C++,Loops,通过分支跳转语句编写循环和正常循环之间有什么区别 i、 例如,e main() { int i=0; while(i<9) { //do something i++; } main() { int i=0; 而(i的区别在于第一个更容易阅读,这就是为什么通常避免使用goto。同样,正如语义中指出的,它们也不一样 性能应该大致相同,因为CPU必须进行跳转

通过分支跳转语句编写循环和正常循环之间有什么区别 i、 例如,e

        main()
        {
        int i=0;
        while(i<9)
        {
          //do something
           i++;
        }
main()
{
int i=0;

而(i的区别在于第一个更容易阅读,这就是为什么通常避免使用
goto
。同样,正如语义中指出的,它们也不一样

性能应该大致相同,因为CPU必须进行跳转才能实现这两种功能。当然,使用更高级别的意图描述(如第一种情况),编译器能够优化某些内容的可能性会增加


也许在这种特殊情况下不是这样,但一般来说,更高层次的描述您想要做的事情是首选的,然后循环结构比
goto
更好。这两个循环并不等价:第二个循环类似于
do
/
while
循环,而不是
while
循环:

main() {
    int i=0;
    do {
      //do something
       i++;
    } while(i<9);
}
main(){
int i=0;
做{
//做点什么
i++;

}当(i在这种情况下,编译器应该产生一个等价的输出。但我认为这两个示例并不等价-a
while
首先检查条件,然后决定何时执行主体。使用
goto
的示例首先执行主体,然后检查条件-它的行为更像
do while
语句


在这种情况下,您不应该使用
goto
,因为它会降低可读性。
goto
s仅在有限数量的场景中有效。

不同之处在于,如果使用第二个,您将不会在此处分支,因为代码未被使用。用于查看汇编程序代码。您的标签代码与do相当op,不是暂时的循环。取决于编译器。而且,
goto
是一种诅咒。
main() {
    int i=0;
    do {
      //do something
       i++;
    } while(i<9);
}