Velocity Reviews - Computer Hardware Reviews

Velocity Reviews > Newsgroups > Programming > C Programming > Plz explain me the following code

Reply
Thread Tools

Plz explain me the following code

 
 
manish sahu
Guest
Posts: n/a
 
      09-19-2009
plz tell me how this code is working and what would be the the o/p
1)

{
int x=20,y=35;
x = y++ + x++;
y = ++y + ++x;
printf("%d %dn",x,y);
}


2)
{
int x=5;
printf("%d %d %dn",x,x<<2,x>>2);
}
Thankyou
 
Reply With Quote
 
 
 
 
Nick Keighley
Guest
Posts: n/a
 
      09-19-2009
On 19 Sep, 17:24, manish sahu <(E-Mail Removed)> wrote:

> plz tell me how this code is working and what would be the the o/p
> 1)
>
> {
> int x=20,y=35;
> x = y++ + x++;


the C standard does not define the behaviour of a program like
this. Anything like
i = i++;
exhibits undefined behaviour. Dig out the comp.lang.c FAQ for details

> y = ++y + ++x;
> printf("%d %dn",x,y);
>
> }
>
> 2)
> {
> int x=5;
> printf("%d %d %dn",x,x<<2,x>>2);}


why don't you just run the program? Look in your textbook
to find out what << and >> do

 
Reply With Quote
 
 
 
 
Seebs
Guest
Posts: n/a
 
      09-19-2009
On 2009-09-19, manish sahu <(E-Mail Removed)> wrote:
> plz tell me how this code is working and what would be the the o/p
> 1)
>
> {
> int x=20,y=35;
> x = y++ + x++;
> y = ++y + ++x;
> printf("%d %dn",x,y);
> }


This could do just about anything; it's undefined behavior and there is no
realistic way to determine what it "should" produce.

> 2)
> {
> int x=5;
> printf("%d %d %dn",x,x<<2,x>>2);
> }


This one is well-defined and requires no explanation.

-s
--
Copyright 2009, all wrongs reversed. Peter Seebach / http://www.velocityreviews.com/forums/(E-Mail Removed)
http://www.seebs.net/log/ <-- lawsuits, religion, and funny pictures
http://en.wikipedia.org/wiki/Fair_Game_(Scientology) <-- get educated!
 
Reply With Quote
 
manish sahu
Guest
Posts: n/a
 
      09-21-2009
On Sep 19, 4:59*pm, Seebs <(E-Mail Removed)> wrote:
> On 2009-09-19, manish sahu <(E-Mail Removed)> wrote:
>
> > plz tell me how this code is working and what would be the the o/p
> > 1)

>
> > {
> > int x=20,y=35;
> > x = y++ + x++;
> > y = ++y + ++x;
> > printf("%d %dn",x,y);
> > }

>
> This could do just about anything; it's undefined behavior and there is no
> realistic way to determine what it "should" produce.
>
> > 2)
> > {
> > int x=5;
> > printf("%d %d %dn",x,x<<2,x>>2);
> > }

>
> This one is well-defined and requires no explanation.
>
> -s
> --
> Copyright 2009, all wrongs reversed. *Peter Seebach / (E-Mail Removed)://www.seebs.net/log/<-- lawsuits, religion, and funny pictureshttp://en.wikipedia.org/wiki/Fair_Game_(Scientology) <-- get educated!


Thankyou dear
 
Reply With Quote
 
Peter Nilsson
Guest
Posts: n/a
 
      09-21-2009
On Sep 20, 9:59*am, Seebs <(E-Mail Removed)> wrote:
> On 2009-09-19, manish sahu <(E-Mail Removed)> wrote:
> > int x=5;
> > printf("%d %d %dn",x,x<<2,x>>2);
> > }

>
> This one is well-defined and requires no explanation.


Whether a text line requires a terminating new-line is
implementation defined. There can be practical consequences
to leaving it off. [e.g. on old line printers.]

--
Peter
 
Reply With Quote
 
Ben Pfaff
Guest
Posts: n/a
 
      09-21-2009
Peter Nilsson <(E-Mail Removed)> writes:

> On Sep 20, 9:59*am, Seebs <(E-Mail Removed)> wrote:
>> On 2009-09-19, manish sahu <(E-Mail Removed)> wrote:
>> > int x=5;
>> > printf("%d %d %dn",x,x<<2,x>>2);
>> > }

>>
>> This one is well-defined and requires no explanation.

>
> Whether a text line requires a terminating new-line is
> implementation defined. There can be practical consequences
> to leaving it off. [e.g. on old line printers.]


The "n" is there, I think that manish just left off the \ as a
typo.
--
char a[]="\n .CJacehknorstu";int putchar(int);int main(void){unsigned long b[]
={0x67dffdff,0x9aa9aa6a,0xa77ffda9,0x7da6aa6a,0xa6 7f6aaa,0xaa9aa9f6,0x11f6},*p
=b,i=24;for(;p+=!*p;*p/=4)switch(0[p]&3)case 0:{return 0;for(p--;i--;i--)case+
2:{i++;if(i)break;else default:continue;if(0)case 1utchar(a[i&15]);break;}}}
 
Reply With Quote
 
Keith Thompson
Guest
Posts: n/a
 
      09-21-2009
Peter Nilsson <(E-Mail Removed)> writes:
> On Sep 20, 9:59*am, Seebs <(E-Mail Removed)> wrote:
>> On 2009-09-19, manish sahu <(E-Mail Removed)> wrote:
>> > int x=5;
>> > printf("%d %d %dn",x,x<<2,x>>2);
>> > }

>>
>> This one is well-defined and requires no explanation.

>
> Whether a text line requires a terminating new-line is
> implementation defined. There can be practical consequences
> to leaving it off. [e.g. on old line printers.]


"n" was almost certainly a typo for "\n".

It's not clear that the output produced by the printf call is going to
be the last line of the program's output. The posted code was just a
single compound statement. It was probably intended to be the body of
main(), but as long as we're not making assumptions ...

--
Keith Thompson (The_Other_Keith) (E-Mail Removed) <http://www.ghoti.net/~kst>
Nokia
"We must do something. This is something. Therefore, we must do this."
-- Antony Jay and Jonathan Lynn, "Yes Minister"
 
Reply With Quote
 
Processor-Dev1l
Guest
Posts: n/a
 
      09-22-2009
On Sep 19, 6:24*pm, manish sahu <(E-Mail Removed)> wrote:
> plz tell me how this code is working and what would be the the o/p
> 1)
>
> {
> int x=20,y=35;
> x = y++ + x++;
> y = ++y + ++x;
> printf("%d %dn",x,y);
>
> }

x is set to 20 and y is set to 35.
in the next line you make x a result of 20+35 and THEN you increase
both x and y. It means x should be 56 and y 35.
Then you increase x (57) and y (36) and y = y + x will make y to be
set to 93.
But as my colleagues here said, it is compiler dependent (this code
can be just junk)

>
> 2)
> {
> int x=5;
> printf("%d %d %dn",x,x<<2,x>>2);}
>
> Thankyou

Man, find out something about binary shifts by yourself .
 
Reply With Quote
 
Processor-Dev1l
Guest
Posts: n/a
 
      09-22-2009
On Sep 22, 8:10*am, Processor-Dev1l <(E-Mail Removed)> wrote:
> On Sep 19, 6:24*pm, manish sahu <(E-Mail Removed)> wrote:> plz tell me how this code is working and what would be the the o/p
> > 1)

>
> > {
> > int x=20,y=35;
> > x = y++ + x++;
> > y = ++y + ++x;
> > printf("%d %dn",x,y);

>
> > }

>
> x is set to 20 and y is set to 35.
> in the next line you make x a result of 20+35 and THEN you increase
> both x and y. It means x should be 56 and y 35.
> Then you increase x (57) and y (36) and y = y + x will make y to be
> set to 93.
> But as my colleagues here said, it is compiler dependent (this code
> can be just junk)

Correction here:
> x is set to 20 and y is set to 35.
> in the next line you make x a result of 20+35 and THEN you increase
> both x and y. It means x should be 56 and y 36.
> Then you increase x (57) and y (37) and y = y + x will make y to be
> set to 94.
> But as my colleagues here said, it is compiler dependent (this code
> can be just junk)




>
>
>
> > 2)
> > {
> > int x=5;
> > printf("%d %d %dn",x,x<<2,x>>2);}

>
> > Thankyou

>
> Man, find out something about binary shifts by yourself .


Sorry for typo...
 
Reply With Quote
 
Keith Thompson
Guest
Posts: n/a
 
      09-22-2009
Processor-Dev1l <(E-Mail Removed)> writes:
> On Sep 19, 6:24*pm, manish sahu <(E-Mail Removed)> wrote:
>> plz tell me how this code is working and what would be the the o/p
>> 1)
>>
>> {
>> int x=20,y=35;
>> x = y++ + x++;
>> y = ++y + ++x;
>> printf("%d %dn",x,y);
>>
>> }

> x is set to 20 and y is set to 35.
> in the next line you make x a result of 20+35 and THEN you increase
> both x and y. It means x should be 56 and y 35.
> Then you increase x (57) and y (36) and y = y + x will make y to be
> set to 93.
> But as my colleagues here said, it is compiler dependent (this code
> can be just junk)


The behavior is undefined, as several posters have already pointed
out.

[snip]

--
Keith Thompson (The_Other_Keith) (E-Mail Removed) <http://www.ghoti.net/~kst>
Nokia
"We must do something. This is something. Therefore, we must do this."
-- Antony Jay and Jonathan Lynn, "Yes Minister"
 
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
plz post the vhdl code for dma controller 8257 with description(very urgent.....plz) vijaygubba General Computer Support 0 02-04-2008 02:31 PM
Re: plz help!!! plz plz plz plzplzplz help the noob alkzy Microsoft Certification 0 10-31-2004 10:04 PM
Computer Problems... Plz Plz Plz HELP ME..... Nick Computer Support 0 06-04-2004 08:50 PM
Re: please can someone explain the following code. suzy ASP .Net 3 07-31-2003 02:07 PM
Can any body explain the output of following code srikanth C++ 14 07-10-2003 05:09 AM



Advertisments