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;
}