Solving 2^2/2*2+5-1 and 1 - 5+2*2/2^2 to Get 8

  • Thread starter Thread starter dE_logics
  • Start date Start date
Join the discussion
Registration is free. Start your own thread to ask a follow-up.
13 replies · 3K views
dE_logics
Messages
742
Reaction score
0
In the following sources -

Code:
#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.
 
Physics news on Phys.org
So how do we write exponential here?

And what's the actual order then?
 
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:
#include <math.h>
.
.
.
double x;
x = pow(2.0, 2.0);
 
oh...I remember that function though.

So what does exponential do?
 
I mean if I've written '^' what will it mean in C?
 
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
 
Ok...new issues; in this code -

Code:
#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?
 
Order of operations:
a = 1 - 5+2*2/2;
a = 1 - 5+2*1
a = 1 - 5 + 2
a = -4 + 2 = -2
 
Code:
	char a = 2 / 2 * 2 [B]+[/B] 5 [B]-[/B] 1;

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

	//Expected -(((2/2)*2)[B]+[/B]5)[B]+[/B]1

typo?
i don't get it. :(