C++ 如何在循环中切换变量

C++ 如何在循环中切换变量,c++,C++,变量i在2和3之间切换,并乘以a,如下例所示: a=2; a=a*i // a=2*2=4 i=2 a=a*i // a=4*3=12 i=3 a=a*i // a=12*2=24 i=2 a=a*i // a=24*3=72 i=3 只要a为1000,该操作就会持续 如何按示例所示顺序给出I两个值?int main() int main() { int a = 2; int multiplier; for (int i = 0; a < 1000; ++i)

变量
i
2
3
之间切换,并乘以
a
,如下例所示:

a=2;
a=a*i // a=2*2=4    i=2
a=a*i // a=4*3=12   i=3
a=a*i // a=12*2=24  i=2
a=a*i // a=24*3=72  i=3
只要
a
1000
,该操作就会持续

如何按示例所示顺序给出
I
两个值?

int main()
int main()
{
  int a = 2;
  int multiplier;
  for (int i = 0; a < 1000; ++i)
  {
    multiplier = (i % 2) ? 2 : 3;
    a *= multiplier;
  }
}
{ INTA=2; 整数乘法器; 对于(int i=0;a<1000;++i) { 乘数=(i%2)?2:3; a*=乘数; } }
您应该能够使用循环

int a = 2;
bool flip = true;

while (a < 1000)
{
    a *= flip ? 2 : 3;
    flip = !flip;
}
inta=2;
布尔翻转=真;
而(a<1000)
{
a*=翻转?2:3;
翻转=!翻转;
}

不能让i同时等于两个值。但是,您可以使i在2和3之间交替,直到a<1000。下面是代码

int a = 2;
int counter = 0;
while (a < 1000) {
    if (counter % 2 == 0) {
        a *= 2;
    }
    else {
        a *= 3;
    }
    counter++;
}
inta=2;
int计数器=0;
而(a<1000){
如果(计数器%2==0){
a*=2;
}
否则{
a*=3;
}
计数器++;
}

这里有一个快速解决方案,它不涉及条件

int c = 0;
while (a < 1000)
    a *= (c++ % 2) + 2;
关键是,在要求获得真正简单的东西之前,你可能应该先自己尝试一下。

inta=2,i=2;
而(a<1000)
{
a*=i;
i=5-i;
}

还有许多其他方法。

最好在这里使用for循环。它将计数器保持在循环范围内,并且更具可读性,因为您的用例显然就是for的设计目的。也可以使用++计数器,因为您不需要计数器的本地副本。是的,我理解您的意思。如果我这样做的话,它会更简洁。只是一些风格上的东西,让OP的问题更有趣。这真的很冗长,如果编译器没有正确优化,会导致重复的指令。我认为flip应该在开始时初始化为true。在op的例子中,a乘以2,然后乘以3,依此类推;for循环的初始值设定项中不能有两个类型化声明。它应该是
a*=multiplier
;你的分号也不见了。噢,糟了,我在手机上很快打好了。然后我编辑了我的帖子,将乘数移动到for循环初始值设定项列表中。我想我忘记了C++没有java酷。已更新,现在代码已编译。@chrislaplant它们是基于其代码的值。它们在代码标记中非常合适。
for(int c = 0; a < 1000; c++)
    a *= (c % 2) + 2;
#include <iostream>
using namespace std;

int main() {
  int its_bacon_time;
  int i = ++(its_bacon_time = 0);
  int y = 18;
  int z = 9;
  bool flag = !false;
  int sizzle;
  typedef bool decision_property;
  #define perhaps (decision_property)(-42*42*-42)
  #ifdef perhaps
  # define YUM -
  # define YUMMM return
  #endif
  bool bacon = !(bool) YUM(sizzle = 6);
  if(flag)
    std::cout << "YEP" << std::endl;
  while (flag) {
    if (bacon = !bacon)
      flag = !flag; // YUM()?
    if (YUM((YUM-i)YUM(i*2))+1>=((0x1337|0xECC8)&0x3E8))
      (*((int*)&flag)) &= 0x8000;
    else
      flag = perhaps;
    std::cout << i << " ";
    int multiplicative_factor = y / (bacon ? z : y);
    int* temporal_value_indicator = &i;
    (**(&temporal_value_indicator)) *=
      (((((multiplicative_factor & 0x0001) > 0) ? sizzle : bacon) // ~yum~
      << 1) ^ (bacon? 0 : 15));
    std::cout << (((((multiplicative_factor & 0x0001) > 0) ? sizzle : bacon) // ~yum~
      << 1) ^ (bacon? 0 : 15)) << std::endl;
  }

  YUMMM its_bacon_time;
}
int a = 2, i = 2;
while( a < 1000 )
{
    a *= i;
    i = 5 - i;
}