Reputation:
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
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
Reputation: 1321
Because the code in curly braces is executed until the condition in for loop becomes false.
Upvotes: 0
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
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