Connecting Tech Pros Worldwide Help | Site Map

Casting problem ?!

 
LinkBack Thread Tools Search this Thread
  #1  
Old December 2nd, 2005, 07:55 AM
Stranger
Guest
 
Posts: n/a
Default Casting problem ?!

what is stored in "i" variable in this program ?

long i;
float y;
float number;
y = number;
i = * ( long * ) &y;

notice that "number" variable has been initialized ...


  #2  
Old December 2nd, 2005, 08:05 AM
Neelesh Bodas
Guest
 
Posts: n/a
Default Re: Casting problem ?!

Stranger wrote:[color=blue]
> what is stored in "i" variable in this program ?
>
> long i;
> float y;
> float number;
> y = number;
> i = * ( long * ) &y;
>
> notice that "number" variable has been initialized ...[/color]

Where is the initialization of "number"? I nothing initialized, and y
assigned a junk value.
Also, please use C++-style casts - they are provided for a reason.
The result would be a junk value in "i".

  #3  
Old December 2nd, 2005, 08:05 AM
Mark
Guest
 
Posts: n/a
Default Re: Casting problem ?!

i *think* he may have meant "note" that "number" has been initialized.
ie, elsewhere in his program that he has not shown.

however, i wouldnt know whats in i... why cant you just do
i = long(y)? or (long)y?

  #4  
Old December 2nd, 2005, 08:45 AM
Carlos Martinez Garcia
Guest
 
Posts: n/a
Default Re: Casting problem ?!

The first N bytes of y.
N=sizeof(long)

The content of the first N bytes depends on how your computer an OS
represents floats in memory.

Stranger wrote:[color=blue]
> what is stored in "i" variable in this program ?
>
> long i;
> float y;
> float number;
> y = number;
> i = * ( long * ) &y;
>
> notice that "number" variable has been initialized ...
>[/color]
  #5  
Old December 2nd, 2005, 01:45 PM
mlimber
Guest
 
Posts: n/a
Default Re: Casting problem ?!

Mark wrote:[color=blue]
> i *think* he may have meant "note" that "number" has been initialized.
> ie, elsewhere in his program that he has not shown.
>
> however, i wouldnt know whats in i... why cant you just do
> i = long(y)? or (long)y?[/color]

Perhaps because that was not the author's intent. If s/he wanted to
truncate y to the nearest whole number, s/he would have done just what
you said. If, however, s/he wanted an implementation-dependent,
bit-wise representation of y, then the nasty pointer casts may
accomplish that (depending on the sizes of the various data types).
Using reinterpret_cast would be preferred because it would signal
non-portable code.

Cheers! --M

  #6  
Old December 2nd, 2005, 02:05 PM
deane_gavin@hotmail.com
Guest
 
Posts: n/a
Default Re: Casting problem ?!


mlimber wrote:[color=blue]
> Mark wrote:[color=green]
> > i *think* he may have meant "note" that "number" has been initialized.
> > ie, elsewhere in his program that he has not shown.
> >
> > however, i wouldnt know whats in i... why cant you just do
> > i = long(y)? or (long)y?[/color]
>
> Perhaps because that was not the author's intent. If s/he wanted to
> truncate y to the nearest whole number, s/he would have done just what
> you said. If, however, s/he wanted an implementation-dependent,
> bit-wise representation of y, then the nasty pointer casts may
> accomplish that (depending on the sizes of the various data types).
> Using reinterpret_cast would be preferred because it would signal
> non-portable code.[/color]

Isn't the OP's code

float y;
float number;
y = number;

undefined behaviour is number is not initialised before being assigned
to y?

Gavin Deane

  #7  
Old December 4th, 2005, 07:15 PM
Ron Natalie
Guest
 
Posts: n/a
Default Re: Casting problem ?!

Carlos Martinez Garcia wrote:[color=blue]
> The first N bytes of y.
> N=sizeof(long)
>
> The content of the first N bytes depends on how your computer an OS
> represents floats in memory.
>[/color]

It might not be even that. There's no guarantee that float* can
be converted to long* with a cast.
 

Bookmarks

Thread Tools Search this Thread
Search this Thread:

Advanced Search

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 Off
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are On

Popular Articles

What is Bytes?

We are a network of experts and professionals in IT and software development that help one another with answers to tough questions and share insights. Get the best answers to your questions from over 220,840 network members.