Velocity Reviews - Computer Hardware Reviews

Velocity Reviews > Newsgroups > Programming > C Programming > Need Explanation on Lvalue Assignment for the following snippet

Reply
Thread Tools

Need Explanation on Lvalue Assignment for the following snippet

 
 
Pranav
Guest
Posts: n/a
 
      09-04-2008
#include<stdio.h>
#include<conio.h>
int main()
{
const int i=6;
int k = 9;
int a[i], *c = a, *v = a ;
a[2] = 9;

*c++ = *v++; // ( 1 ) This line does not generate any exception /
error
k++ = k++; // ( 2 ) But this line is generating
k++ = 6; // ( 3 ) This Also Generating

getch();
}

Now I know that you cannot assign a value to an expression; But why
does the above (1) expression not generating a exception/error/
warning? and (2) & (3) are generating as they are supposed to. Please
explain this.
Is this due to operator precedence in the case(1), ie the expression
access the value and then assign them and then increment the pointers
and move forward. Correct if I am wrong..,

(I am using DevC++ Compiler for testing)
 
Reply With Quote
 
 
 
 
vippstar@gmail.com
Guest
Posts: n/a
 
      09-04-2008
On Sep 4, 11:19 am, pete <(E-Mail Removed)> wrote:
> Richard Heathfield wrote:
> > pete said:

>
> >> Pranav wrote:

> > <snip>
> >>> const int i=6;
> >>> int k = 9;
> >>> int a[i], *c = a, *v = a ;
> >>> a[2] = 9;

>
> >>> *c++ = *v++; // ( 1 ) This line does not generate any exception /
> >> You're assigning a value to (*c) there.
> >> There nothing wrong with that.

>
> > Look again!

>
> I was just addressing the lvalue issue from the subject line.
> The code has other problems too.
> I read you other post in this thread.
> I think you got them all.


He did not mention <conio.h> and getchr() not being defined by the
standard.

 
Reply With Quote
 
 
 
 
Nick Keighley
Guest
Posts: n/a
 
      09-04-2008
On 4 Sep, 09:11, Richard Heathfield <(E-Mail Removed)> wrote:
> Pranav said:
>
> > #include<stdio.h>
> > #include<conio.h>


non-standard header

> > int main()


int main(void)
is better style

> > {
> > const int i=6;
> > int k = 9;
> > int a[i], *c = a, *v = a ;


"a" appears to be a C99 VLA (older versions of C
don't support variable length arrays)

> > a[2] = 9;

>
> > *c++ = *v++; // ( 1 ) This line does not generate any exception /
> > error

>
> Nevertheless, the behaviour of the statement, and therefore the program, is
> undefined, because *v++ reads a[0], the value of which is indeterminate.


as c and v point to the same thing wouldn't there be UB even if
a[0] was initialised?

#include <stdio.h>

int main (void)
{
int a [6] = {0};
int *c = a;
int *v = a;

*c++ = *v++; /* UB I believe */
return 0;
}

<snip>

--
Nick Keighley

 
Reply With Quote
 
vippstar@gmail.com
Guest
Posts: n/a
 
      09-04-2008
On Sep 4, 11:33 am, pete <(E-Mail Removed)> wrote:
> (E-Mail Removed) wrote:
>
> > He did not mention <conio.h> and getchr() not being defined by the
> > standard.

>
> Even though getchr() isn't defined by the standard,
> I think you mean getch().


That's right.
 
Reply With Quote
 
Willem
Guest
Posts: n/a
 
      09-04-2008
Nick Keighley wrote:
) as c and v point to the same thing wouldn't there be UB even if
) a[0] was initialised?
)
) #include <stdio.h>
)
) int main (void)
) {
) int a [6] = {0};
) int *c = a;
) int *v = a;
)
) *c++ = *v++; /* UB I believe */
) return 0;
) }

Nope, that's not UB.


SaSW, Willem
--
Disclaimer: I am in no way responsible for any of the statements
made in the above text. For all I know I might be
drugged or something..
No I'm not paranoid. You all think I'm paranoid, don't you !
#EOT
 
Reply With Quote
 
vippstar@gmail.com
Guest
Posts: n/a
 
      09-04-2008
On Sep 4, 2:13 pm, Richard Heathfield <(E-Mail Removed)> wrote:
> (E-Mail Removed) said:
>
> > On Sep 4, 11:19 am, pete <(E-Mail Removed)> wrote:

>
> <snip>
>
> >> I think you got them all.

>
> > He did not mention <conio.h> and getchr() not being defined by the
> > standard.

>
> That's true - I didn't. Feel free to do so yourself.


I don't understand your reply, I did so. If my reply came out as
offensive, it was not my intention. I was not trying to correct you, I
had the genuine intentions of replying to the OP with a full post, but
after seeing yours, the only thing to add was that conio/getch is not
standard.
 
Reply With Quote
 
Pranav
Guest
Posts: n/a
 
      09-04-2008
Thank You All For quick response and in depth explanation.

Pranav

 
Reply With Quote
 
Antoninus Twink
Guest
Posts: n/a
 
      09-04-2008
On 4 Sep 2008 at 11:39, http://www.velocityreviews.com/forums/(E-Mail Removed) wrote:
> On Sep 4, 2:13 pm, Richard Heathfield <(E-Mail Removed)> wrote:
>> (E-Mail Removed) said:
>> > He did not mention <conio.h> and getchr() not being defined by the
>> > standard.

>>
>> That's true - I didn't. Feel free to do so yourself.

>
> I had the genuine intentions of replying to the OP with a full post,
> but after seeing yours, the only thing to add was that conio/getch is
> not standard.


It's crystal clear that your intention was to be a prissy little
dickhead as usual. If the OP is writing a console program for Windows,
WHY IN THE HELL should he listen to your whining about non-"Standard"
functions THAT HE NEEDS TO USE?

 
Reply With Quote
 
Richard
Guest
Posts: n/a
 
      09-05-2008
Antoninus Twink <(E-Mail Removed)> writes:

> On 4 Sep 2008 at 11:39, (E-Mail Removed) wrote:
>> On Sep 4, 2:13 pm, Richard Heathfield <(E-Mail Removed)> wrote:
>>> (E-Mail Removed) said:
>>> > He did not mention <conio.h> and getchr() not being defined by the
>>> > standard.
>>>
>>> That's true - I didn't. Feel free to do so yourself.

>>
>> I had the genuine intentions of replying to the OP with a full post,
>> but after seeing yours, the only thing to add was that conio/getch is
>> not standard.

>
> It's crystal clear that your intention was to be a prissy little
> dickhead as usual. If the OP is writing a console program for Windows,
> WHY IN THE HELL should he listen to your whining about non-"Standard"
> functions THAT HE NEEDS TO USE?
>


It was blatantly obvious at an early stage that vippstar is only
interested in currying favour with the clique at each and every
opportunity.
 
Reply With Quote
 
Richard
Guest
Posts: n/a
 
      09-05-2008
(E-Mail Removed) writes:

> On Sep 4, 2:13 pm, Richard Heathfield <(E-Mail Removed)> wrote:
>> (E-Mail Removed) said:
>>
>> > On Sep 4, 11:19 am, pete <(E-Mail Removed)> wrote:

>>
>> <snip>
>>
>> >> I think you got them all.

>>
>> > He did not mention <conio.h> and getchr() not being defined by the
>> > standard.

>>
>> That's true - I didn't. Feel free to do so yourself.

>
> I don't understand your reply, I did so. If my reply came out as
> offensive, it was not my intention. I was not trying to correct you, I
> had the genuine intentions of replying to the OP with a full post, but
> after seeing yours, the only thing to add was that conio/getch is not
> standard.


Try reading the thread before offering advice. It saves a lot of clc
clique in fighting and tedious repeated answers.
 
Reply With Quote
 
 
 
Reply

Thread Tools

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are Off


Similar Threads
Thread Thread Starter Forum Replies Last Post
Need explanation for a Javascript snippet Vipul Kapadia Javascript 6 04-20-2009 05:49 PM
I need a technical explanation on why I get 'error: invalid lvalue inincrement' Chad C Programming 21 02-20-2009 11:37 PM
using a method as an lvalue and "invalid lvalue in assignment"compilation error markryde@gmail.com C Programming 11 09-22-2008 10:42 AM
operators requiring lvalue/rvalue operands and resulting in rvalue/lvalue Kavya C Programming 9 10-28-2006 01:45 AM
Perl hangs when returning lvalue closure from another lvalue closure Julian Mehnle Perl Misc 0 07-17-2003 03:13 PM



Advertisments