0

是否可以执行以下代码中显示的操作(使用任何语言)?

while(Condition)
// can I do anything here (like initializations) between the condition and the body of the loop?
{
   // while Loop body
}
4

6 回答 6

4

由于您尚未指定语言...

在 Common Lisp 和 Emacs Lisp 中,循环宏支持initially可以在此处执行您想要的操作的子句。

(loop while (my-predicate)
      initially (perform-setup)
      do (my-function))

该子句子句在循环外执行(即仅一次)。

于 2013-06-15T12:51:35.320 回答
3

不,不可能,至少在我所知道的任何语言中(并且涵盖了很多)

要模拟相同的效果:

bool firstTime = true;
while (condition)
{
    if (firstTime)
    {
        // do initialization here
        firstTime = false
    }
    //  the rest of your loop stuff here
}

这会做你想做的事,但在性能方面并不完全相同,因为在循环体中发生了额外的比较。

于 2013-06-15T12:42:47.323 回答
0

不,不是我见过的任何语言。

于 2013-06-15T12:43:05.537 回答
0

不,这至少在java中是不可能的

while(Condition)
// You can't do anything here
{
// This is the While Loop body
}
于 2013-06-15T12:44:17.143 回答
0

不,不可能在 while 循环之后和 while 循环体之前初始化变量或任何东西。如果你喜欢

boolean a;
while(condition)
   a=false;
{
//body of loop
}

然后a=false将成为while循环的主体和

{
//body of loop
}

不会是 while 循环的一部分。

于 2013-06-15T12:44:39.503 回答
0

你可以通过

for(int i=0,x=1,c=3;print(i,x,c),i<15;i++)
{
//use i,x,c here ,where they are initialized once
}

输出: print(i,x,c) 将执行一次

这适用于 C#

于 2013-06-15T13:09:16.707 回答