0

# Basic math

Hey gang. My question is simple: How do you calculate: int x=1; for(int i=0; i<=1;i++){ int sum= x+i; cout<<sum; } The compiler shows 12 but to be honest as of late I’ve gotten confused on how to calculate the for loops properly. Thank you in advance, Dawid

1/5/2019 11:33:21 AM

Dawid

+3

In for loops you intialized i with 0 and put a condition if i<=1. If that condition satisfied, loops runs. Now, First condition check is 0<=1 is true so it will add value of sum to x+i which will be 1. And then it will print 1. Second condition is 1<=1 which is true. It will again add 1+1 to sum. And prints 2 in output. Third condition will be 2<=1 which is not true so loop will be break.

+3

p stored a which is the adress of first element of a, and that remains 0. So with *p you're printing a[0] 5 times.

+2

You cout with every iteration, so it's two results: x+0 > 1 x+1 > 2

+2

If you don't put anything into your array but just declare it, there is random stuff at that place in memory, so your output could be anything.

+1

thanks for the answers. So by this logic, the output of the following code: int a[5]; int *p=a; for(int i=0; i<5;i++){ a[i]=i; cout *p; } should be 0,1,2,3,4 but the compiler shows 00000. what al i calculating wrong?

+1

Your code doesn't make sense: int[1]. Can you show the whole code?

0

Fair enough, makes sense. Now I added the following to the compiler and this came out: int[1]; int x; for(x=0;x<1;x++){ x=a[x]; cout<< x; } compiler shows 7208852. How I try to explain it: we have an array of 2 elements in int [1]. Int x is a variable. The for loop executes, given the condition x=0; and if it‘s less than 1, increment it by one. So far so good. Now lets put that into practise: x=a[x], meaning: 0=a[0], because in the first iteration of the loop x=0, the array srarts at 0 and therefore the output should be 0. How does the compiler calculate 7? And what did I understand wrong?

0

forgot to add a, its: int a[1];