gpt4 book ai didi

c++ - 如果条件为 TRUE,则在 do while 循环中发布增量(最好的方法?)

转载 作者:行者123 更新时间:2023-11-30 20:46:38 25 4
gpt4 key购买 nike

确实很简单。

int main()
{
int n,i,j;
n = 20;
i = 0;
char ch[8];

do
{
ch[i] = (n%2) + '0';
n /= 2;
// SIMPLE WAY
if(n != 0)
i++;
}
while(n != 0);

for(j=0; j<=i; j++)
{
printf("%c",ch[i-j]);
}

return 0;
}

但我不喜欢这样

我尝试了以下方法,但代码很糟糕

int main()
{
int n,i,j;
n = 20;
i = 0;
char ch[8];

do
{
ch[i] = (n%2) + '0';
n /= 2;
}
while(n != 0 && i++); // THIS

for(j=0; j<=i; j++)
{
printf("%c",ch[i-j]);
}

return 0;
}

如何使用 BEST WAY 仅当循环为真时才使值递增?或者只是纠正第二种方式 while(n != 0 && i++)

最佳答案

How to get the value incremented only when the loop is true with BEST WAY?
OR just correct 2nd way while(n != 0 && i++)

我不推荐这两种方法。

不需要进行特殊测试来查看代码是否应该递增 i .

do {
ch[i] = (n%2) + '0';
n /= 2;
i++;
} while(n != 0);
// Just decrement after the loop
i--;

for(j=0; j<=i; j++) {
printf("%c",ch[i-j]);
}

或者根本不减少

do {
ch[i] = (n%2) + '0';
n /= 2;
i++;
} while(n != 0);

for(j=0; j<i; j++) {
printf("%c",ch[i-1-j]);
}

或者使用 do ... while也用于打印。

do {
ch[i++] = (n%2) + '0';
n /= 2;
} while(n);

do {
printf("%c",ch[--i]);
} while (i);
<小时/>

注释:

char ch[8];对于 int 来说太小了超出范围 [-255 ... 255] 。对于 32 位 int ,使用char ch[32];或更宽。一般来说,使用char ch[sizeof(int) * CHAR_BIT];

ch[i] = (n%2) + '0'; n < 0时肯定会产生意想不到的结果。考虑unsigned类型代替。

关于c++ - 如果条件为 TRUE,则在 do while 循环中发布增量(最好的方法?),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53036012/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com