Jump to content
  • Advertisement


This topic is now archived and is closed to further replies.


floats passed as doubles?

This topic is 5380 days old which is more than the 365 day threshold we allow for new replies. Please post a new topic.

If you intended to correct an error in the post then please contact us.

Recommended Posts

I''m writing a console plug in, and I''m using the va_arg macros to access variable argument lists passed to the print() function. The thing is, if I pass the function a float, it actually passes it to the function using 8 bytes instead of 4, which indicates it''s passing it as a double. Is this normal? Currently I''m having to retrieve the value as a double, then cast it to a float. --------------------------------------- Let''s struggle for our dream of Game! http://andrewporritt.4t.com

Share this post

Link to post
Share on other sites
how are u passing that float?

void func(float);

like this:
float a;

or like this:

not sure if this will help, but try adding "f" at the end of the number...

Share this post

Link to post
Share on other sites
Yes it''s normal.


Variable Argument Lists
Function declarations in which the last member of argument-declaration-list is the ellipsis (...) can take a variable number of arguments. In these cases, C++ provides type checking only for the explicitly declared arguments. You can use variable argument lists when you need to make a function so general that even the number and types of arguments can vary. The printf family of functions is an example of functions that use variable argument lists.

To access arguments after those declared, use the macros contained in the standard include file STDARG.H as described in Functions with Variable Argument Lists.

Microsoft Specific

Microsoft C++ allows the ellipsis to be specified as an argument if the ellipsis is the first argument and the ellipsis is preceded by a comma. Therefore, the declaration int Func( int i, ... ); is legal, but int Func( int i ... ); is not.

END Microsoft Specific

Declaration of a function that takes a variable number of arguments requires at least one “placeholder” argument, even if it is not used. If this place-holder argument is not supplied, there is no way to access the remaining arguments.

When arguments of type char are passed as variable arguments, they are converted to type int. Similarly, when arguments of type float are passed as variable arguments, they are converted to type double. Arguments of other types are subject to the usual integral and floating-point promotions. See Integral Promotions in Chapter 3 for more information.

Share this post

Link to post
Share on other sites

  • Advertisement

Important Information

By using GameDev.net, you agree to our community Guidelines, Terms of Use, and Privacy Policy.

We are the game development community.

Whether you are an indie, hobbyist, AAA developer, or just trying to learn, GameDev.net is the place for you to learn, share, and connect with the games industry. Learn more About Us or sign up!

Sign me up!