Reputation: 261
I have the following code:
z=x-~y-1;
printf("%d",z);
z=(x^y)+2(x&y);
printf("%d",z);
z=(x|y)+(x&y);
printf("%d",z);
z=2(x|y)-(x^y);
printf("%d",z);
I get this error message:
10:11: error: called object is not a function or function pointer
z=(x^y)+2(x&y);
^
The language is C. Why did this happen?
Upvotes: 1
Views: 5874
Reputation: 85757
As for what the error means: 2(x&y)
tells the compiler to call the function 2
, passing x&y
as an argument (just like printf("hi")
means "call printf
and pass "hi"
as an argument").
But 2
isn't a function, so you get a type error. Syntactically speaking, whenever you have a value followed by (
, that's a function call.
Upvotes: 1
Reputation: 613
Change
z=(x^y)+2(x&y);
to
z=(x^y)+2*(x&y);
and
z=2(x|y)-(x^y);
to
z=2*(x|y)-(x^y);
You need the multiplication operator if multiplication is what you intended.
Upvotes: 1