user2408639
user2408639

Reputation:

Curly brackets after for statement

I'm a newbie. Wrote a code to print sum of number from 1 to 10. Here's what happened;

for(a = 1; a<=10; a++)
sum += a;
cout<<sum;

Executing that gave me the correct answer i.e 55

When I execute the following:

for(a = 1; a<=10; a++)
{
sum += a;
cout<<sum;
}

It gives me a complete different and wrong answer i.e 13610152128364555

Why does this happen? What goes wrong when I put curly brackets after for statement?

I hope this is not a silly question.

Upvotes: 0

Views: 2649

Answers (4)

justin
justin

Reputation: 104708

because:

for(a = 1; a<=10; a++)
sum += a;
cout<<sum;

is like saying:

for(a = 1; a<=10; a++) {
    sum += a;
}
cout<<sum;

When you do this, it prints the number once rather than upon each iteration.

Upvotes: 5

ZoomIn
ZoomIn

Reputation: 1321

Because the code in curly braces is executed until the condition in for loop becomes false.

Upvotes: 0

Mike de Dood
Mike de Dood

Reputation: 393

In the first one you are executing cout<

In the second you are calling it every execution of the loop. That makes it print 1, then 3, then 6 ... always appending it, since there is no newline. As you can see you have 55 as last output.

Upvotes: 0

paxdiablo
paxdiablo

Reputation: 882326

If you break apart that big number:

1 3 6 10 15 21 28 36 45 55

you can see what's happening - it's actually outputting the accumulated sum after every addition, because your cout is within the loop. It's just hard to see because you have no separator between all those numbers.

You'll see the difference if you format your code properly:

for(a = 1; a<=10; a++)
    sum += a;             // Done for each loop iteration
cout<<sum;                // Done once at the end.

for(a = 1; a<=10; a++)
{
    sum += a;             // Done for each loop iteration
    cout<<sum;            // Done for each loop iteration
}

Upvotes: 10

Related Questions