我刚刚开始了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;
}发布于 2018-11-25 01:24:23
第一个将检查它是i%3还是i%5。即使两者都是真,它也只执行一次。
第二个将执行两次sum+=i,如果两者都是真的话:
30%3 = 0 and 30%5 = 0因此,这两种方法都将被执行:
if(i%3==0)
sum+=i;
if (i%5==0)发布于 2018-11-25 02:37:36
在第一种情况下,任何比较都足以执行句子。如果第一个比较是正确的,则将不再进行第二个比较。这是因为真或布尔总是正确的。也就是说,在连接或有一个真实的比较序列中,结果总是正确的。
在第二种情况下,总是对这两个条件进行评估。根据这些评估结果,判决是否会被执行。
https://stackoverflow.com/questions/53463894
复制相似问题