0

Here's the code:

#include<iostream.h>
int test();
int main()
{
	cout<<test();
	return 0;
}

int test()
{
	int a=1;
	a==1? return 1: return 0;
}

Could anyone please help me by telling me why VC++ 6.0 rejects this piece of programming code? Is the line" a==1? return 1: return 0;" grammatically wrong? Thank you very much in advance!

4
Contributors
8
Replies
9
Views
7 Years
Discussion Span
Last Post by firstPerson
0

I'm pretty sure you can only use that in the form of condition == a ? x = 1 : x = 2;

0

Sorry for not replying earlier. Thank you sfuo and firstPerson. And it worked to put it like

return ( a == 1 ? true : false )

Thank you very much firstPerson! But I'm still kinda wondering why it didn't work the way I put it in the first place.

0

Well... think... What exactly is the value of "return 1"? That doesn't evaluate to an rvalue.

0

Sorry for not replying earlier. Thank you sfuo and firstPerson. And it worked to put it like

return ( a == 1 ? true : false )

Thank you very much firstPerson! But I'm still kinda wondering why it didn't work the way I put it in the first place.

Lets look at this code again :

a == 1 ? return 1; return 0;

In between ? : operator meaning in :

? <here> : <here> ;

could only be a value, so you cannot have return statements
or anything else;

thus you need to wrap everything with the return statement
so it would work :

return ( a == 1 ? 1  : 0 );

So the inside part gets executed, and evaluates to either 1 or 0
then all you have left is either return 1 or return 0.

0

But why did this work?

a==1? cout<<"1": cout<<"0";

because thats still returning a value;

cout<<"A", mean A goes into the stream and then cout is returned .

with your :

a == 1 ? return 1 : return 0;

does not return a value for that expression so it does not work
This topic has been dead for over six months. Start a new discussion instead.
Have something to contribute to this discussion? Please be thoughtful, detailed and courteous, and be sure to adhere to our posting rules.