[C con Clase] Conversion a flotante C++

Davidson, Steven srd4121 en njit.edu
Lun Feb 4 22:43:30 CET 2013


Hola Vicente,

2013/2/4 vicente lozano <vicentelozano en gmail.com>

> Hola tengo una duda sobre las conversiones a flotante en C++.
>
> En un codigo que estoy revisando aparece:
>
> for (int i=0,....){
> ....
>  vector3 a=vector3(if,....)
> ...
> }
>
> if no esta declarado y vector3 recibe 3 floats como parametros.
>
> Asi que mi duda es:
> - Se puede poner el nombre de una variable seguido de una f en plan
> casting como con las constantes. (Equivalente a (float) i)
> - Es pseudocodigo indicando precisamente eso.
>
>
En primer lugar, no creo que el código original sea 'if'. Posiblemente,
habría sido:

vector3 a = vector3( 1f, ... );

Es decir, un uno como valor literal de tipo 'float', al usar el sufijo 'f'.

No puede ser 'if', porque el compilador daría un error al intentar usar el
vocablo 'if', cuando espera una expresión. Además, si fuere el nombre de
una variable, tampoco podríamos usar 'if', porque no podemos crear nombres
(identificadores) que coincidan con los nombres de vocablos de C++. Esto
provocaría más problemas que aportar soluciones.

Sólo puedes usar los sufijos con valores literales. No tendría sentido
agregar un carácter al final de una cadena de caracteres para indicar su
tipo, ya que sería difícil distinguir el sufijo del nombre original. Por
ejemplo,

int precio = 1;
int preciof = 10;

cout << preciof;

¿Nos referimos a 'preciof' o a 'precio', pero de tipo 'float'? Es imposible
saberlo, así que ni falta hace que lo intentemos.

Si necesitas hacer un cásting a 'float', entonces hazlo explícitamente:

cout << (float)precio;

O de la forma "más C++":

cout << static_cast<float>(precio);


Espero haber aclarado la duda.

Steven
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.conclase.net/pipermail/cconclase_listas.conclase.net/attachments/20130204/b311102b/attachment.html>


Más información sobre la lista de distribución Cconclase