我刚刚开始Euler项目,我已经遇到了一些问题。 为什么这些方法会产生不同的结果?
int sum=0;
for (int i=0;i<n;i++)
{
if(i%3==0 || i%5==0)
sum+=i;
}
与
int sum=0;
for (int i=0;i<n;i++)
{
if(i%3==0)
sum+=i;
if (i%5==0)
sum+=i;
}
答案 0 :(得分:2)
第一个将是i%3还是i%5。 即使两者都正确,它也只会执行一次。
第二个,如果两个都成立,将执行sum + = i两次:
30%3 = 0 and 30%5 = 0
所以这两个都将被执行:
if(i%3==0)
sum+=i;
if (i%5==0)
答案 1 :(得分:1)
首先,任何比较都满足以执行该语句就足够了。如果第一个比较为真,则将不再进行第二个比较。这是因为True或[boolean]始终为true。也就是说,在由一个真值加入或存在一个真值的比较序列中,结果始终为真就足够了。
在第二个中,始终评估两个条件。并且根据这些评估结果,是否执行句子。