如果条件为TRUE(最佳方式?),则在do while循环中后置增量
Post Increment in do while loop if condition is TRUE (BEST WAY?)
这确实很简单。
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++)
如何仅在使用BEST WAY的循环为true时使值递增
或者在(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);
备注:
对于范围CCD_ 6之外的CCD_。对于32位int
,请使用char ch[32];
或更宽的CCD_8。通常,使用char ch[sizeof(int) * CHAR_BIT];
CCD_ 10在CCD_。请考虑unsigned
类型。
好吧,你总是可以做到:
do {
// code
} while(n != 0 && ++i);
这样,i
在&&
的第一部分评估为True之后立即递增,并且&&
应用于n != 0
和i
的更新版本。
在C++中,您可以执行以下操作:
std::cout << std::bitset<8>(n); // 00010100 for n = 20
如果前导0
正常。
它可以是这样的:
int n = 20;
int i = 7;
char ch[] = "00000000";
while (n) // if n already = 0 then do nothing
{
ch[i--] = (n % 2) + '0'; // assign then increment
n /= 2; // shift to right same as n >>= 1;
}
printf ("%08s", ch);
do
{ .......... }while(n && i++ ? 1 : n);
关于&&
动作的这些东西被称为短路评估
相关文章:
- 我正在使用嵌套的while循环来解析具有多行的文本文件,但由于某种原因,它只通过第一行,我不知道为什么
- while循环中while循环的时间复杂度是多少
- 在while循环中输入带有std::cin的字符串后,控制台会输出大量胡言乱语
- 擦除while循环中迭代的元素
- 为什么我不能在 while 循环中创建线程?
- 退出简单while循环时出现问题
- 如果条件为TRUE(最佳方式?),则在do while循环中后置增量
- 即使没有满足他们的条件,我也无法通过一些 do-while 循环
- 嵌套While循环不起作用(C++问题)
- 如何通过替换顺序代码的while循环来添加OpenMP for循环
- 使用 GMP 的 while 循环出现问题
- 程序以使用 C++ 中的 while 循环查找一组数字的最小值
- 为什么在 while 循环中返回表达式不起作用
- 如何使用 do while 循环确定最高值和最低值
- 如何读取单个字符并在输入两个字符序列时输出? 使用 while 循环和C++
- 用于在 C++ 中使用 while 循环查找下一个素数的简单函数
- OpenCV QT,显示视频的帧(不使用while循环)
- 输入循环 while 函数
- c++中的循环(while)
- 为什么这段代码没有循环(while)