C++11 这个循环是如何工作的,以及';它的目的是什么?

C++11 这个循环是如何工作的,以及';它的目的是什么?,c++11,C++11,我发现用于循环的代码如下所示: //// Code for(int i = 0; i < MAX; i++); //// Code ///code 对于(int i=0;i a不需要代码块——一个语句就足够了。特别是,是一个完美的语句,它什么也不做。因此,此循环不执行任何操作MAX次数。大多数编译器可能都有能力删除NOP循环,这取决于优化标志。C++中的循环 a不需要代码块——一个语句就足够了。特别是,是一个完美的语句,它什么也不做。因此,此循环不执行任何操作MAX次数。根据优化标志的

我发现用于循环的代码如下所示:

//// Code
for(int i = 0; i < MAX; i++);
//// Code
///code
对于(int i=0;i
我不明白那是怎么回事,因为有
结束时,没有大括号括起的代码块
{}
,以便在循环期间执行


<>这是如何工作的,它的目的是什么?C++中的循环

< p> a不需要代码块——一个语句就足够了。特别是,
是一个完美的语句,它什么也不做。因此,此循环不执行任何操作
MAX
次数。大多数编译器可能都有能力删除NOP循环,这取决于优化标志。C++中的循环

a不需要代码块——一个语句就足够了。特别是,
是一个完美的语句,它什么也不做。因此,此循环不执行任何操作
MAX
次数。根据优化标志的不同,大多数编译器可能有能力完全删除no-op循环。

这是一个正常的
for
循环,它的主体中什么都不做。为了更好地说明这一点,这里介绍了如何更好地对其进行格式化,以便了解其工作原理:

for(int i = 0; i < MAX; i++)
{
   // Just chillin...
}
您可以移动
for
循环的递增步骤,使其看起来像在做什么:

for(int i = 0; i < MAX; )
{
   i++;
}
这里甚至省略了循环计数器的初始化以及终止条件和递增步骤

我同意@StenSoft的说法——这通常是一个指标,表明有人试图模拟一些工作。然而,以这种特殊方式进行类似操作的巨大流量是,它非常依赖于计算机的速度。如果你有一台速度较慢的机器,10000个循环的循环可能会很多,但是如果你有一台相对现代的机器,这个循环会被吃掉,就像什么都没有一样

如果要模拟工作,请使用
sleep
功能或您使用的平台和库提供的任何功能

示例:

  • 对于POSIX.1-2001符合性系统

  • 适用于使用Windows API的Windows

需要注意的是,并不是所有的sleep函数都有相同的时间单位,因此必须小心并了解传递的参数是如何解释的——毫秒、秒等

有关空块语句的其他一些示例:

if(SOME_CONDITION);

甚至

int a = 0;
switch(a)
{
  case 0:
    break;
}

for、while等的主体如果遵循该语言的语法,则被认为是正确的。它是否做了什么,这是一个完全不同的问题。

这是一个正常的
for
循环,在它的体内什么都不做。为了更好地说明这一点,这里介绍了如何更好地对其进行格式化,以便了解其工作原理:

for(int i = 0; i < MAX; i++)
{
   // Just chillin...
}
您可以移动
for
循环的递增步骤,使其看起来像在做什么:

for(int i = 0; i < MAX; )
{
   i++;
}
这里甚至省略了循环计数器的初始化以及终止条件和递增步骤

我同意@StenSoft的说法——这通常是一个指标,表明有人试图模拟一些工作。然而,以这种特殊方式进行类似操作的巨大流量是,它非常依赖于计算机的速度。如果你有一台速度较慢的机器,10000个循环的循环可能会很多,但是如果你有一台相对现代的机器,这个循环会被吃掉,就像什么都没有一样

如果要模拟工作,请使用
sleep
功能或您使用的平台和库提供的任何功能

示例:

  • 对于POSIX.1-2001符合性系统

  • 适用于使用Windows API的Windows

需要注意的是,并不是所有的sleep函数都有相同的时间单位,因此必须小心并了解传递的参数是如何解释的——毫秒、秒等

有关空块语句的其他一些示例:

if(SOME_CONDITION);

甚至

int a = 0;
switch(a)
{
  case 0:
    break;
}
for、while等的主体如果遵循该语言的语法,则被认为是正确的。它是否做某事是一个完全不同的问题。

在这种情况下:

for(int i = 0; i < MAX; i++);
可以写成:

for(int i = 0; i < MAX; i++){ // execute a statement; }
for(inti=0;i
它可以被称为:

for(int i = 0; i < MAX; i++) // execute a statement;
for(inti=0;i
没有执行语句时

for(int i = 0; i < MAX; i++);
for(inti=0;i
在这种情况下:

for(int i = 0; i < MAX; i++);
可以写成:

for(int i = 0; i < MAX; i++){ // execute a statement; }
for(inti=0;i
它可以被称为:

for(int i = 0; i < MAX; i++) // execute a statement;
for(inti=0;i
没有执行语句时

for(int i = 0; i < MAX; i++);
for(inti=0;i
那么这是一个空循环。可能是打字错误?这可能是一个错误,也可能是一个非常糟糕的代码中的绵羊计数(忙碌等待)。它只起作用——“i”最大次数递增,尽管它对外部世界几乎没有任何作用,但会减慢你的代码。为什么在这个问题上投反对票?我看不出有什么问题。如果我们继续对这样的问题投反对票,那么,
支持(;;)也应该被视为一个糟糕的问题。那么它就是一个空循环。可能是打字错误?这可能是一个错误,也可能是一个非常糟糕的代码中的绵羊计数(忙碌等待)。它只起作用——“i”最大次数递增,尽管它对外部世界几乎没有任何作用,但会减慢你的代码。为什么在这个问题上投反对票?我看不出有什么问题。如果我们继续对这样的问题投反对票,那么,
支持(;;)也应该被视为一个糟糕的问题。