# Testing bedmas.

1. Sep 21, 2009

### dE_logics

In the following sources -

Code (Text):
#include<stdio.h>
main()
{
char a = 2^2/2*2+5-1;
printf("%d \n", a);
//Expected - ((((2^2)/2)*2)+5)-1
//Expected result -- 8
//Actual result -- 4
a = 1 - 5+2*2/2^2;
printf("%d \n", a);
//Expected - ((((2^2)/2)*2)+5)-1
//Expected result -- 8
//Actual result -- -4
}
I expect a result 8 after computation of 2^2/2*2+5-1 or 1 - 5+2*2/2^2 since 1 - 5+2*2/2^2 will mean -
((((2^2)/2)*2)+5)-1 and 2^2/2*2+5-1 will mean -
((((2^2)/2)*2)+5)-1

Which yields 8.

2. Sep 22, 2009

### dE_logics

Sooo...is this a bug in C?

3. Sep 22, 2009

### mXSCNT

In C, ^ means bitwise xor, not exponentiation.

4. Sep 22, 2009

### dE_logics

So how do we write exponential here?

And what's the actual order then?

5. Sep 24, 2009

### dE_logics

6. Sep 28, 2009

### Staff: Mentor

There is no exponent operator in C. If you want to raise a number to a power, use the standard library function pow(). For example, to calculate 22, do something like this:
Code (Text):

#include <math.h>
.
.
.
double x;
x = pow(2.0, 2.0);

7. Oct 4, 2009

### dE_logics

oh...I remember that function though.

So what does exponential do?

8. Oct 4, 2009

### dE_logics

I mean if I've written '^' what will it mean in C?

9. Oct 4, 2009

### mgb_phys

Bitwise exclusive 'or' as mXSCNT said:

So take two numbers and the result number has a one bit where one and only one of the bits is on in the two numbers.

25 = 11001
12 = 01100
^. = 10101 = 21

10. Oct 5, 2009

### dE_logics

humm...thanks

11. Oct 5, 2009

### dE_logics

Ok...new issues; in this code -

Code (Text):
#include<stdio.h>
main()
{
char a = 2/2*2+5-1;
printf("%d \n", a);
//Expected - (((2/2)*2)+5)-1
//Expected result -- 6
//Actual result -- 6
a = 1 - 5+2*2/2;
printf("%d \n", a);
//Expected -(((2/2)*2)+5)+1
//Expected result -- 6
//Actual result -- -2
}
So why does it come - 2 in the second print?

12. Oct 5, 2009

### mgb_phys

Order of operations:
a = 1 - 5+2*2/2;
a = 1 - 5+2*1
a = 1 - 5 + 2
a = -4 + 2 = -2

13. Oct 5, 2009

### ApexOfDE

Code (Text):

char a = 2 / 2 * 2 [B][COLOR="Red"]+[/COLOR][/B] 5 [B][COLOR="#ff0000"]-[/COLOR][/B] 1;

a = 1 [B][COLOR="Red"]-[/COLOR][/B] 5 + 2 * 2 / 2;

//Expected -(((2/2)*2)[B][COLOR="Red"]+[/COLOR][/B]5)[B][COLOR="Red"]+[/COLOR][/B]1

typo?
i dont get it. :(

14. Oct 5, 2009

### dE_logics

Yes, I got it, thanks.