C++ 当执行此代码时,它不显示任何输出。为什么呢?

C++ 当执行此代码时,它不显示任何输出。为什么呢?,c++,c,loops,for-loop,C++,C,Loops,For Loop,以下代码在执行时没有输出。有人能解释一下下面的代码吗 int main{ int i,j; 对于i=0;i0/2=0。余数也是0 2. 否则就断了 如果i%2不为真(第一次迭代时为0),则会立即中断for循环。省略中断;语句,如果要证明0到9之间的所有值在除以2时是否都有余数 注意包装破损;在另一个else语句中,它仍然是多余的 旁注: j在你的代码中没有用处 我猜你想要的是这样的: #include <stdio.h> int main (void) { int i, j;

以下代码在执行时没有输出。有人能解释一下下面的代码吗

int main{ int i,j; 对于i=0;i<10;i++{ 如果我是%2 printf%d\t,i; 其他的 打破 } } 0%2给出false,因此循环在第一次迭代时终止,而不调用printf

0%2给出false,因此循环在第一次迭代时终止,而不调用printf

i%2给出了i除以2的欧几里得除法的剩余部分。这并不意味着我可以被2整除。如果后者为true,则i%2给出0,该值隐式转换为false。如果为false,则i%2给出1,该值隐式转换为true。因此,在第一次迭代中,条件表达式的计算结果为false,因此您可以立即跳出循环

如果要检查i除以2的可除性,必须使用i%2==0。

i%2给出i除以2的欧几里德除法的剩余部分。这并不意味着我可以被2整除。如果后者为true,则i%2给出0,该值隐式转换为false。如果为false,则i%2给出1,该值隐式转换为true。因此,在第一次迭代中,条件表达式的计算结果为false,因此您可以立即跳出循环


如果要检查i被2整除的情况,必须使用i%2==0。

您的代码有两个问题:

1. 如果我是%2

i%2的条件计算结果为false,因为计算-0除以2-结果为0->0/2=0。余数也是0

2. 否则就断了

如果i%2不为真(第一次迭代时为0),则会立即中断for循环。省略中断;语句,如果要证明0到9之间的所有值在除以2时是否都有余数

注意包装破损;在另一个else语句中,它仍然是多余的

旁注:

j在你的代码中没有用处

我猜你想要的是这样的:

#include <stdio.h>

int main (void) {
   int i, j;

   for ( i = 0; i < 10; i++ ) {
     if ( ( j = i % 2 ) )
       printf("(%d / 2) has a remainder of %d.\n", i, j);
     else
       printf("(%d / 2) has no remainder.\n", i);
   }
}


请注意,通过1/2除法,由于隐式双精度到整数的转换,结果0.5提高到最接近的上整数值1。

您的代码有两个问题:

1. 如果我是%2

i%2的条件计算结果为false,因为计算-0除以2-结果为0->0/2=0。余数也是0

2. 否则就断了

如果i%2不为真(第一次迭代时为0),则会立即中断for循环。省略中断;语句,如果要证明0到9之间的所有值在除以2时是否都有余数

注意包装破损;在另一个else语句中,它仍然是多余的

旁注:

j在你的代码中没有用处

我猜你想要的是这样的:

#include <stdio.h>

int main (void) {
   int i, j;

   for ( i = 0; i < 10; i++ ) {
     if ( ( j = i % 2 ) )
       printf("(%d / 2) has a remainder of %d.\n", i, j);
     else
       printf("(%d / 2) has no remainder.\n", i);
   }
}


请注意,通过除法1/2,由于隐式双精度到整数的转换,结果0.5被提升到最接近的上整数值1。

else break;-您希望循环中的这一行得到多少次迭代?请从开始并阅读。另外,请阅读您应用的标记的描述。学习如何在调试器中单步执行每一行代码的好时机。第一次执行循环i为零。0%2产生false,因此else部分执行==>循环退出,程序终止。我最近看到了一些示例,其中break似乎被用作一种null语句,而编码人员不了解它的真正用途。else break;-您希望循环中的这一行得到多少次迭代?请从开始并阅读。另外,请阅读您应用的标记的描述。学习如何在调试器中单步执行每一行代码的好时机。第一次执行循环i为零。0%2产生false,因此else部分执行==>循环退出,程序终止。我最近看到了一些示例,其中break似乎被用作一种null语句,而编码人员不了解它的真正用途。问题并没有说明I%2的用途。它问为什么什么都不打印。您的回答解释了%mod的作用,但没有解释为什么没有打印任何内容。@t.niese正确,谢谢您提供的信息!问题并没有说明i%2的目的是什么。它问为什么什么都不打印。您的回答解释了%mod的作用,但没有解释为什么没有打印任何内容。@t.niese正确,谢谢您提供的信息!