> -----Original Message-----
> From: civics@oocities.com [mailto:civics@oocities.com]
> Sent: Wednesday, May 23, 2007 7:39 PM
> To: vijay.zanvar@wipro.com
> Subject: Survey Results
>
> Name = sathish
> URL = sathish58@yahoo.com
> Comments = Hi Vijay
>
> This is sathish. I used to read C Tips and Tricks. I have
> many questions out of which I am sending only 3 to you and I
> hope you will reply
>
> 1) Why the below program says LValue required?
>
> main()
> {
> int a=5;
> int b=4;
> int c;
> a > b ? c=1 : c = 0;
> }
To understand why you are getting the "LValue required"
error, you should have knowledge of how the conditional statement
is defined by the C grammar. I assume you know interpreting the
grammar. So,
conditional-expression:
logical-OR-expression
logical-OR-expression ? expression : conditional-expression
As you see, the operands of the ?: operator, in order, are a
logical expression, an expression, and either another expression
or a nested conditional expression. Two examples are shown
below:
a > b ? a : b;
and
a > b ? a : (b > c ? b : c);
Now, compare your conditional expression with the grammar. You
will find that you have used statements (c = 1 and c = 0) instead
of expression. What actually you want is:
c = a > b ? 1 : 0;
>
> But when I say (c=0) it accepts.
>
(c=0) is an expression, not a statement.
> 2) I am little bit confused or rather I dont know whats
> actually happening in this program. The following program
> seems to be fine but did not give required output.
>
>
> #include<stdio.h>
>
> #define TOTAL_ELEMENTS (sizeof(array) / sizeof(array[0]))
>
> int array[] = {23,34,12,17,204,99,16};
> int main()
> {
> int d;
> for(d=-1;d <= (TOTAL_ELEMENTS-2);d++)
> printf("%d\n",array[d+1]);
> return 0;
> }
>
Incidently, this problem is discussed in the Q. 29 in
http://www.oocities.org/vijoeyz/faq/.
> 3) How can I substitute the condition here so that I can
> print both "Hello" and "World"
>
> if "condition"
> printf("Hello");
> else
> printf("World");
>
>
{
...
if (0)
{
hello:
printf("Hello");
goto world;
}
else
{
goto hello;
world:
printf("world");
}
...
}
Using goto is not always recommended. One situaion where they
are used is, if you are in deeply nested for loop and you want
get out of it.
> The above may sound silly for you but as a beginner I wonder
> how the above things are going on. Thank you once again.
>
> Bye for now
>
> Thanks & Regards
> Sathish Kumar
> subject = Survey Results
> REMOTE_HOST: 216.119.215.193
>