Aquí está el código original de tu comentario:
Real fBaseAngularWheelSpeed = Min(fHeadingLength, m_sWheelTurningParams.MaxSpeed);
Primero, parece que no estás seguro de lo que significa “Real”. Esto se refiere a un “número real”, es decir, cualquier número sin un componente imaginario. Cuando escribió su pregunta, puso el valor de retorno como int, pero ints no puede tener partes fraccionarias, por lo que es una tergiversación de lo que está haciendo el código. La función Min seguramente devolverá un Real, no un int.
- ¿Existe algún modelo de cálculo X más débil que una máquina de Turing (pero aún no trivial) para el cual una máquina de Turing puede predecir el comportamiento de detención?
- ¿Cuál es un ejemplo de un problema cuya respuesta no es obvia, pero si los datos se visualizan de una manera nueva, se vuelven más fáciles de resolver?
- Cómo convertir 25 cm a mm sin usar una regla
- Para aquellos que son buenos en programación pero no en matemáticas, ¿qué les resulta difícil de las matemáticas?
- Soy muy malo en matemáticas, pero quiero ser programador. ¿Debo solicitar la programación?
El bit sobre el que realmente está preguntando es la llamada a la función Min . Supongo que sabes lo que es una llamada de función, pero estás un poco confundido acerca de lo que están haciendo esos corchetes angulares. Min no es una definición de función, es una plantilla de función; eso significa que es un tipo de máquina para generar funciones. Por el nombre, probablemente se lee algo como esto:
plantilla
T Min (T a, T b)
{devolver a <b? a: b; }
En otras palabras, su trabajo es devolver el mínimo de dos valores. La única razón de la plantilla es para que pueda hacer esto para cualquier tipo de datos, ya sea un entero, flotante, doble, real, vectorial o alguna otra clase; Mientras el operador menor que trabaja en él, esta plantilla generará una función con éxito.
Normalmente, no necesita decirle explícitamente a la plantilla cuál es su parámetro; Min( a, b )
funciona bien. Los corchetes angulares generalmente solo son necesarios si el compilador no puede inferir el tipo de plantilla a partir de los parámetros que le pasa. Sin embargo, si el parámetro es ambiguo, por ejemplo, si a y b son de diferentes tipos, entonces podría ser necesario dar el parámetro de plantilla específicamente. Entonces, uno podría arriesgarse a adivinar que, en este caso, fHeadingLength o m_sWheelTurningParams.MaxLength podría no ser del tipo “Real”, y el autor de este código quería asegurarse de que se convertirían a Real antes de tomar el mínimo.
Parece que la denominación de variables y tipos en el código original tuvo una gran influencia del estilo de codificación de Windows de finales de los noventa. El prefijo “f” implica que la variable es en realidad un flotante. Esa notación se llama sistema húngaro (http://stackoverflow.com/questio…) y es un olor a código. El tipo “Real” es probablemente un typedef para flotante o doble, y probablemente existe para que, si se necesita más precisión más adelante, se pueda cambiar por una clase especializada de números de alta precisión.
El prefijo m_s implica que la variable es un miembro estático de la clase actual. Nombrar una MaxSpeed variable con una letra mayúscula inicial no coincide con ninguna de las otras convenciones de nomenclatura aquí y solo parece incompetente. Si es una constante, probablemente debería ser MAX_SPEED.